Procházet zdrojové kódy

Yet another buffer RAM patch: tNever ever ever keep a buffer memory chunk around for an empty buffer that could go on the freelist. This wants profiling to make sure that performance doesnt suffer.

svn:r10993
Nick Mathewson před 18 roky
rodič
revize
9260a824ef
2 změnil soubory, kde provedl 14 přidání a 1 odebrání
  1. 7 0
      ChangeLog
  2. 7 1
      src/or/buffers.c

+ 7 - 0
ChangeLog

@@ -1,3 +1,10 @@
+Changes in version 0.2.0.4-alpha - 2007-??-??
+  o Minor features (performance):
+    - Be even more aggressive about releasing RAM from small
+      empty buffers. Thanks to our free-list code, this shouldn't be too
+      performance-intensive.
+
+
 Changes in version 0.2.0.3-alpha - 2007-07-29
   o Major features:
     - The first pieces of our "bridge" design for blocking-resistance

+ 7 - 1
src/or/buffers.c

@@ -486,7 +486,13 @@ buf_remove_from_front(buf_t *buf, size_t n)
   if (buf->datalen) {
     buf->cur = _wrap_ptr(buf, buf->cur+n);
   } else {
-    buf->cur = buf->mem;
+    if (IS_FREELIST_SIZE(buf->len)) {
+      buf->highwater = 0;
+      if (add_buf_mem_to_freelist(buf))
+        return;
+    } else {
+      buf->cur = buf->mem;
+    }
   }
   check();
 }