From e3acf84bf26f2730575624b1a1d3979d84272427 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sun, 10 Jan 2010 18:22:49 +0100 Subject: [PATCH] [btr]: Avoid large memcpy()s when creating the wrap buffers. --- buffer_tree.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/buffer_tree.c b/buffer_tree.c index 8aa66b6c..dfecf10a 100644 --- a/buffer_tree.c +++ b/buffer_tree.c @@ -622,11 +622,16 @@ next: if (sz1 + sz2 >= dest_size) break; } + /* + * If the second buffer is large, we only take the first part of it to + * avoid having to memcpy() huge buffers. + */ + sz2 = PARA_MIN(sz2, (size_t)(64 * 1024)); if (!wbr) { assert(buf1); if (!buf2) /* nothing to do */ return; - /* make a new wrap buffer combining buf1 and buf 2. */ + /* Make a new wrap buffer combining buf1 and buf2. */ sz = sz1 + sz2; buf = para_malloc(sz); PARA_DEBUG_LOG("merging input buffers: (%p:%zu, %p:%zu) -> %p:%zu\n", -- 2.30.2