dgram: restore buffer optimization in fixBufferList · nodejs/node@dea5dd7
1+'use strict';
2+3+const common = require('../common.js');
4+const dgram = require('dgram');
5+const { Buffer } = require('buffer');
6+7+const bench = common.createBenchmark(main, {
8+type: ['string', 'buffer', 'mixed', 'typedarray'],
9+chunks: [1, 4, 8, 16],
10+len: [64, 512, 1024],
11+n: [1000],
12+});
13+14+function main({ type, chunks, len, n }) {
15+const socket = dgram.createSocket('udp4');
16+17+let testData;
18+switch (type) {
19+case 'string':
20+testData = Array(chunks).fill('a'.repeat(len));
21+break;
22+case 'buffer':
23+testData = Array(chunks).fill(Buffer.alloc(len, 'a'));
24+break;
25+case 'mixed':
26+testData = [];
27+for (let i = 0; i < chunks; i++) {
28+if (i % 2 === 0) {
29+testData.push(Buffer.alloc(len, 'a'));
30+} else {
31+testData.push('a'.repeat(len));
32+}
33+}
34+break;
35+case 'typedarray':
36+testData = Array(chunks).fill(new Uint8Array(len).fill(97));
37+break;
38+}
39+40+bench.start();
41+42+for (let i = 0; i < n; i++) {
43+socket.send(testData, 12345, 'localhost', (err) => {
44+if (err && err.code !== 'ENOTCONN' && err.code !== 'ECONNREFUSED') {
45+throw err;
46+}
47+});
48+}
49+50+bench.end(n);
51+socket.close();
52+}