diff options
author | Nick Mathewson <nickm@torproject.org> | 2007-07-30 17:47:43 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2007-07-30 17:47:43 +0000 |
commit | 9260a824ef1218cfbb9c4dfae3b2c5c241251fc7 (patch) | |
tree | 95e76c9b93550f816eed35a62ded0d60f4ca2c35 | |
parent | 34a3a5e2f4a1eb0c3256cccd22e1efae8584e946 (diff) | |
download | tor-9260a824ef1218cfbb9c4dfae3b2c5c241251fc7.tar.gz tor-9260a824ef1218cfbb9c4dfae3b2c5c241251fc7.zip |
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
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | src/or/buffers.c | 8 |
2 files changed, 14 insertions, 1 deletions
@@ -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 diff --git a/src/or/buffers.c b/src/or/buffers.c index c5d8b1c7d0..30f98bd580 100644 --- a/src/or/buffers.c +++ b/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(); } |