Created a bigger buffer for write/read.
authorBrian Aker <brian@tangent.org>
Sat, 13 Oct 2007 17:26:52 +0000 (10:26 -0700)
committerBrian Aker <brian@tangent.org>
Sat, 13 Oct 2007 17:26:52 +0000 (10:26 -0700)
set are now more pipelined then perform (roughly 4X faster according to done
in users).

include/memcached.h
lib/memcached_io.c
lib/memcached_storage.c

index 6797279b5dbf0e701a6f13375e01fa09aa8abcd3..9df45603aaf76a962a4de19c30c803ac9ea64534 100644 (file)
@@ -39,7 +39,7 @@ typedef struct memcached_server_st memcached_server_st;
 #define HUGE_STRING_LEN 8196
 #define MEMCACHED_MAX_KEY 251 /* We add one to have it null terminated */
 //#define MEMCACHED_MAX_BUFFER 8196
-#define MEMCACHED_MAX_BUFFER 8196
+#define MEMCACHED_MAX_BUFFER HUGE_STRING_LEN*4
 
 typedef enum {
   MEMCACHED_SUCCESS,
index 5e05d2c5ac8a84206541754533f1ed325d4a3d3f..54a4b8dcd16d6c154604349533c03c9a067942e0 100644 (file)
@@ -154,8 +154,12 @@ ssize_t memcached_io_flush(memcached_st *ptr, unsigned int server_key)
     }
 
     sent_length= 0;
+#ifdef orig
     if ((sent_length= send(ptr->hosts[server_key].fd, write_ptr, 
                            write_length, 0)) == -1)
+#endif
+      if ((sent_length= write(ptr->hosts[server_key].fd, write_ptr, 
+                              write_length)) == -1)
     {
       switch (errno)
       {
index 5a8701fafb25a350bf5e5b870af4d0a82444f2f7..9d82b56f8659244c7dfc2c16072f18a39e5b95ce 100644 (file)
@@ -26,6 +26,7 @@ static memcached_return memcached_send(memcached_st *ptr,
                                        uint16_t  flags,
                                        memcached_storage_action verb)
 {
+  char to_write;
   size_t write_length;
   ssize_t sent_length;
   memcached_return rc;
@@ -36,13 +37,11 @@ static memcached_return memcached_send(memcached_st *ptr,
   assert(value_length);
 
   /* Leaving this assert in since only a library fubar could blow this */
-  if (ptr->write_buffer_offset != 0)
-  {
-    WATCHPOINT_NUMBER(ptr->write_buffer_offset);
-  }
+#ifdef NOT_DONE
+  if (!(ptr->flags & MEM_NO_BLOCK) && ptr->write_buffer_offset != 0)
+    assert(0);
+#endif
     
-  assert(ptr->write_buffer_offset == 0);
-
   server_key= memcached_generate_hash(ptr, key, key_length);
 
   rc= memcached_connect(ptr, server_key);
@@ -75,7 +74,12 @@ static memcached_return memcached_send(memcached_st *ptr,
     goto error;
   }
 
-  if ((sent_length= memcached_io_write(ptr, server_key, "\r\n", 2, 1)) == -1)
+  if ((ptr->flags & MEM_NO_BLOCK) && verb == SET_OP)
+    to_write= 0;
+  else
+    to_write= 1;
+
+  if ((sent_length= memcached_io_write(ptr, server_key, "\r\n", 2, to_write)) == -1)
   {
     memcached_quit_server(ptr, server_key);
     rc= MEMCACHED_WRITE_FAILURE;