From 3ae6928d8d3bfb909b72b80e8aaf043325959c4b Mon Sep 17 00:00:00 2001 From: David Turner Date: Tue, 16 Aug 2011 00:55:43 +0200 Subject: [PATCH] emulator opengles: improve TcpStream throughput This patch improves the performance of the TcpStream implementation on the host by disabling the Nagle algorithm, thus improving the bandwidth of small packets. When used with the corresponding change in the emulator, this significantly improves the speed of OpenGLES emulation for many applications. Change-Id: Ic09e51ecddf04bc7d667f46e1d260030d5fcad88 --- .../opengl/shared/OpenglCodecCommon/TcpStream.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tools/emulator/opengl/shared/OpenglCodecCommon/TcpStream.cpp b/tools/emulator/opengl/shared/OpenglCodecCommon/TcpStream.cpp index 4e947daa5..c057ff991 100644 --- a/tools/emulator/opengl/shared/OpenglCodecCommon/TcpStream.cpp +++ b/tools/emulator/opengl/shared/OpenglCodecCommon/TcpStream.cpp @@ -23,6 +23,9 @@ #ifndef _WIN32 #include +#include +#else +#include #endif TcpStream::TcpStream(size_t bufSize) : @@ -39,6 +42,15 @@ TcpStream::TcpStream(int sock, size_t bufSize) : m_bufsize(bufSize), m_buf(NULL) { + // disable Nagle algorithm to improve bandwidth of small + // packets which are quite common in our implementation. +#ifdef _WIN32 + DWORD flag; +#else + int flag; +#endif + flag = 1; + setsockopt( sock, IPPROTO_TCP, TCP_NODELAY, (const char*)&flag, sizeof(flag) ); } TcpStream::~TcpStream()