Browse Source

benchmark: replace [].join() with ''.repeat()

Also add a benchmark to compare both ways to create strings.

PR-URL: https://github.com/nodejs/node/pull/12170
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
v6
Vse Mozhet Byt 8 years ago
committed by James M Snell
parent
commit
74dc3bfe08
  1. 4
      benchmark/crypto/cipher-stream.js
  2. 4
      benchmark/crypto/hash-stream-creation.js
  3. 4
      benchmark/crypto/hash-stream-throughput.js
  4. 35
      benchmark/es/string-repeat.js
  5. 4
      benchmark/fs/write-stream-throughput.js
  6. 4
      benchmark/http/client-request-body.js
  7. 4
      benchmark/http/end-vs-write-end.js
  8. 4
      benchmark/net/net-c2s-cork.js
  9. 4
      benchmark/net/net-c2s.js
  10. 4
      benchmark/net/net-pipe.js
  11. 4
      benchmark/net/net-s2c.js
  12. 4
      benchmark/net/tcp-raw-c2s.js
  13. 4
      benchmark/net/tcp-raw-pipe.js
  14. 4
      benchmark/net/tcp-raw-s2c.js
  15. 4
      benchmark/tls/throughput.js

4
benchmark/crypto/cipher-stream.js

@ -40,11 +40,11 @@ function main(conf) {
var encoding;
switch (conf.type) {
case 'asc':
message = new Array(conf.len + 1).join('a');
message = 'a'.repeat(conf.len);
encoding = 'ascii';
break;
case 'utf':
message = new Array(conf.len / 2 + 1).join('ü');
message = 'ü'.repeat(conf.len / 2);
encoding = 'utf8';
break;
case 'buf':

4
benchmark/crypto/hash-stream-creation.js

@ -25,11 +25,11 @@ function main(conf) {
var encoding;
switch (conf.type) {
case 'asc':
message = new Array(conf.len + 1).join('a');
message = 'a'.repeat(conf.len);
encoding = 'ascii';
break;
case 'utf':
message = new Array(conf.len / 2 + 1).join('ü');
message = 'ü'.repeat(conf.len / 2);
encoding = 'utf8';
break;
case 'buf':

4
benchmark/crypto/hash-stream-throughput.js

@ -24,11 +24,11 @@ function main(conf) {
var encoding;
switch (conf.type) {
case 'asc':
message = new Array(conf.len + 1).join('a');
message = 'a'.repeat(conf.len);
encoding = 'ascii';
break;
case 'utf':
message = new Array(conf.len / 2 + 1).join('ü');
message = 'ü'.repeat(conf.len / 2);
encoding = 'utf8';
break;
case 'buf':

35
benchmark/es/string-repeat.js

@ -0,0 +1,35 @@
'use strict';
const assert = require('assert');
const common = require('../common.js');
const configs = {
n: [1e3],
mode: ['Array', 'repeat'],
encoding: ['ascii', 'utf8'],
size: [1e1, 1e3, 1e6],
};
const bench = common.createBenchmark(main, configs);
function main(conf) {
const n = +conf.n;
const size = +conf.size;
const character = conf.encoding === 'ascii' ? 'a' : '\ud83d\udc0e'; // '🐎'
let str;
if (conf.mode === 'Array') {
bench.start();
for (let i = 0; i < n; i++)
str = new Array(size + 1).join(character);
bench.end(n);
} else {
bench.start();
for (let i = 0; i < n; i++)
str = character.repeat(size);
bench.end(n);
}
assert.strictEqual([...str].length, size);
}

4
benchmark/fs/write-stream-throughput.js

@ -24,11 +24,11 @@ function main(conf) {
chunk = Buffer.alloc(size, 'b');
break;
case 'asc':
chunk = new Array(size + 1).join('a');
chunk = 'a'.repeat(size);
encoding = 'ascii';
break;
case 'utf':
chunk = new Array(Math.ceil(size / 2) + 1).join('ü');
chunk = 'ü'.repeat(Math.ceil(size / 2));
encoding = 'utf8';
break;
default:

4
benchmark/http/client-request-body.js

@ -23,10 +23,10 @@ function main(conf) {
break;
case 'utf':
encoding = 'utf8';
chunk = new Array(len / 2 + 1).join('ü');
chunk = 'ü'.repeat(len / 2);
break;
case 'asc':
chunk = new Array(len + 1).join('a');
chunk = 'a'.repeat(len);
break;
}

4
benchmark/http/end-vs-write-end.js

@ -26,10 +26,10 @@ function main(conf) {
chunk = Buffer.alloc(len, 'x');
break;
case 'utf':
chunk = new Array(len / 2 + 1).join('ü');
chunk = 'ü'.repeat(len / 2);
break;
case 'asc':
chunk = new Array(len + 1).join('a');
chunk = 'a'.repeat(len);
break;
}

4
benchmark/net/net-c2s-cork.js

@ -27,11 +27,11 @@ function main(conf) {
break;
case 'utf':
encoding = 'utf8';
chunk = new Array(len / 2 + 1).join('ü');
chunk = 'ü'.repeat(len / 2);
break;
case 'asc':
encoding = 'ascii';
chunk = new Array(len + 1).join('x');
chunk = 'x'.repeat(len);
break;
default:
throw new Error('invalid type: ' + type);

4
benchmark/net/net-c2s.js

@ -27,11 +27,11 @@ function main(conf) {
break;
case 'utf':
encoding = 'utf8';
chunk = new Array(len / 2 + 1).join('ü');
chunk = 'ü'.repeat(len / 2);
break;
case 'asc':
encoding = 'ascii';
chunk = new Array(len + 1).join('x');
chunk = 'x'.repeat(len);
break;
default:
throw new Error('invalid type: ' + type);

4
benchmark/net/net-pipe.js

@ -27,11 +27,11 @@ function main(conf) {
break;
case 'utf':
encoding = 'utf8';
chunk = new Array(len / 2 + 1).join('ü');
chunk = 'ü'.repeat(len / 2);
break;
case 'asc':
encoding = 'ascii';
chunk = new Array(len + 1).join('x');
chunk = 'x'.repeat(len);
break;
default:
throw new Error('invalid type: ' + type);

4
benchmark/net/net-s2c.js

@ -27,11 +27,11 @@ function main(conf) {
break;
case 'utf':
encoding = 'utf8';
chunk = new Array(len / 2 + 1).join('ü');
chunk = 'ü'.repeat(len / 2);
break;
case 'asc':
encoding = 'ascii';
chunk = new Array(len + 1).join('x');
chunk = 'x'.repeat(len);
break;
default:
throw new Error('invalid type: ' + type);

4
benchmark/net/tcp-raw-c2s.js

@ -83,10 +83,10 @@ function client() {
chunk = Buffer.alloc(len, 'x');
break;
case 'utf':
chunk = new Array(len / 2 + 1).join('ü');
chunk = 'ü'.repeat(len / 2);
break;
case 'asc':
chunk = new Array(len + 1).join('x');
chunk = 'x'.repeat(len);
break;
default:
throw new Error('invalid type: ' + type);

4
benchmark/net/tcp-raw-pipe.js

@ -80,10 +80,10 @@ function client() {
chunk = Buffer.alloc(len, 'x');
break;
case 'utf':
chunk = new Array(len / 2 + 1).join('ü');
chunk = 'ü'.repeat(len / 2);
break;
case 'asc':
chunk = new Array(len + 1).join('x');
chunk = 'x'.repeat(len);
break;
default:
throw new Error('invalid type: ' + type);

4
benchmark/net/tcp-raw-s2c.js

@ -54,10 +54,10 @@ function server() {
chunk = Buffer.alloc(len, 'x');
break;
case 'utf':
chunk = new Array(len / 2 + 1).join('ü');
chunk = 'ü'.repeat(len / 2);
break;
case 'asc':
chunk = new Array(len + 1).join('x');
chunk = 'x'.repeat(len);
break;
default:
throw new Error('invalid type: ' + type);

4
benchmark/tls/throughput.js

@ -26,11 +26,11 @@ function main(conf) {
chunk = Buffer.alloc(size, 'b');
break;
case 'asc':
chunk = new Array(size + 1).join('a');
chunk = 'a'.repeat(size);
encoding = 'ascii';
break;
case 'utf':
chunk = new Array(size / 2 + 1).join('ü');
chunk = 'ü'.repeat(size / 2);
encoding = 'utf8';
break;
default:

Loading…
Cancel
Save