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>
v7.x
Vse Mozhet Byt
8 years ago
committed by
Italo A. Casas
No known key found for this signature in database
GPG Key ID: 23EFEFE93C4CFFFE
15 changed files with
63 additions and
28 deletions
benchmark/crypto/cipher-stream.js
benchmark/crypto/hash-stream-creation.js
benchmark/crypto/hash-stream-throughput.js
benchmark/es/string-repeat.js
benchmark/fs/write-stream-throughput.js
benchmark/http/client-request-body.js
benchmark/http/end-vs-write-end.js
benchmark/net/net-c2s-cork.js
benchmark/net/net-c2s.js
benchmark/net/net-pipe.js
benchmark/net/net-s2c.js
benchmark/net/tcp-raw-c2s.js
benchmark/net/tcp-raw-pipe.js
benchmark/net/tcp-raw-s2c.js
benchmark/tls/throughput.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' :
@ -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' :
@ -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' :
@ -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 ) ;
}
@ -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 :
@ -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 ;
}
@ -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 ;
}
@ -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 ) ;
@ -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 ) ;
@ -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 ) ;
@ -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 ) ;
@ -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 ) ;
@ -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 ) ;
@ -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 ) ;
@ -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 :