Hi everyone,
I've got a performance problem with ice. I used TCP connection to transfer my data which may be 0-100 MB in size. It is too slow via network(WinXP SP2, 100M LAN, It will take about 35 seconds To transfer 9MB data ).
I found that ICE runtime devided the data into packet of 64k in size on WIN32 platform. Here is the related source code of ICE runtime:
IceInternal::TcpTransceiver::Write(Buffer& buf, int timeout)
{
Buffer::Container::difference_type packsize =
static_cast<Buffer::Container::difference_type>(bu f.end() - buf.i);
#ifdef _WIN32
//limit packet size to avoid performance problems on WIN32
if(packetsize > 64 * 1024)
{
packetsize = 64 * 1024;
}
#endif
...
...
}
I belive that too much network I/O times will cause this performance problem.
Is 64K the best value? Is there other ways to improve data transfer performance if I don't wanna modify these codes and recompile them?
Thanks very much.
![]()
![]()
![]()
![]()
YingchunH

Reply With Quote