Hi Yin, Are you using SO_NODELAY on your client socket?
That's one thing to try. The other option is to use a buffered socket and only flush once you've buffered the entire request.
-Todd On Wed, 5 Mar 2008, Yin Chen wrote:
Hi: I am involved in the optimization of the performance of a memcached client library now(written by c). And I found that if I want to set a big value(say: 9000 bytes long), prepare all the data and call write once or split the data to two writes will cause dramatic performance difference: the latter is about 100 times slow than the former. I do the experiment on my own machine, a single core T43 notebook. Run one memcached server instance with the command "/usr/bin/memcached -m 64 -p 11211 -u root", and write code to connect to the 11211 port to write the set operation data. Iterate 100 times to set a 9000 bytes value each time. The client.c code prepares all the data and write the data once. The client_multi_write.c code splite the data to two writes. Run the two programs to get the above result. I think it's partly related to the implement of the memcached? Anybody to confirm the above experiment or give me an explanation? Thanks. -- Chen Yin School of EE & CS, Peking University
