%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
// When calling .end(buffer) right away, this triggers a "hot path" // optimization in http.js, to avoid an extra write call. // // However, the overhead of copying a large buffer is higher than // the overhead of an extra write() call, so the hot path was not // always as hot as it could be. // // Verify that our assumptions are valid. 'use strict'; const common = require('../common.js'); const bench = common.createBenchmark(main, { type: ['asc', 'utf', 'buf'], len: [64 * 1024, 128 * 1024, 256 * 1024, 1024 * 1024], c: [100], method: ['write', 'end'], duration: 5 }); function main({ len, type, method, c, duration }) { const http = require('http'); let chunk; switch (type) { case 'buf': chunk = Buffer.alloc(len, 'x'); break; case 'utf': chunk = 'ü'.repeat(len / 2); break; case 'asc': chunk = 'a'.repeat(len); break; } function write(res) { res.write(chunk); res.end(); } function end(res) { res.end(chunk); } const fn = method === 'write' ? write : end; const server = http.createServer((req, res) => { fn(res); }); server.listen(common.PORT, () => { bench.http({ connections: c, duration }, () => { server.close(); }); }); }