You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					235 lines
				
				5.4 KiB
			
		
		
			
		
	
	
					235 lines
				
				5.4 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								var nul = process.platform === 'win32' ? '\\\\.\\NUL' : '/dev/null'
							 | 
						||
| 
								 | 
							
								var bench = require('fastbench')
							 | 
						||
| 
								 | 
							
								var stream = require('fs').createWriteStream(nul)
							 | 
						||
| 
								 | 
							
								var alt0 = require('./')
							 | 
						||
| 
								 | 
							
								var largeStr = JSON.stringify(require('./package.json'))
							 | 
						||
| 
								 | 
							
								largeStr += largeStr
							 | 
						||
| 
								 | 
							
								largeStr += largeStr
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var run = bench([
							 | 
						||
| 
								 | 
							
								  function alt0ManySmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt0(makeStr('a', 200)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt1ManySmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt1(makeStr('a', 200)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt2ManySmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt2(makeStr('a', 200)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt3ManySmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt3(makeStr('a', 200)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt4ManySmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt4(makeStr('a', 200)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt5ManySmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt5(makeStr('a', 200)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt6ManySmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt6(makeStr('a', 200)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt7ManySmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt7(makeStr('a', 200)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt8ManySmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt8(makeStr('a', 200)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt9ManySmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt9(makeStr('a', 200)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt0SeveralLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt0(makeStr(largeStr, 10)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt1SeveralLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt1(makeStr(largeStr, 10)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt2SeveralLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt2(makeStr(largeStr, 10)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt3SeveralLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt3(makeStr(largeStr, 10)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt4SeveralLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt4(makeStr(largeStr, 10)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt5SeveralLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt5(makeStr(largeStr, 10)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt6SeveralLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt6(makeStr(largeStr, 10)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt7SeveralLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt7(makeStr(largeStr, 10)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt8SeveralLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt8(makeStr(largeStr, 10)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt9SeveralLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt9(makeStr(largeStr, 10)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt0ExponentialSmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt0(makeExpoStr('a', 12)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt1ExponentialSmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt1(makeExpoStr('a', 12)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt2ExponentialSmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt2(makeExpoStr('a', 12)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt3ExponentialSmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt3(makeExpoStr('a', 12)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt4ExponentialSmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt4(makeExpoStr('a', 12)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt5ExponentialSmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt5(makeExpoStr('a', 12)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt6ExponentialSmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt6(makeExpoStr('a', 12)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt7ExponentialSmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt7(makeExpoStr('a', 12)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt8ExponentialSmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt8(makeExpoStr('a', 12)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt9ExponentialSmallConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt9(makeExpoStr('a', 12)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt0ExponentialLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt0(makeExpoStr(largeStr, 7)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt1ExponentialLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt1(makeExpoStr(largeStr, 7)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt2ExponentialLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt2(makeExpoStr(largeStr, 7)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt3ExponentialLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt3(makeExpoStr(largeStr, 7)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt4ExponentialLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt4(makeExpoStr(largeStr, 7)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt5ExponentialLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt5(makeExpoStr(largeStr, 7)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt6ExponentialLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt6(makeExpoStr(largeStr, 7)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt7ExponentialLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt7(makeExpoStr(largeStr, 7)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt8ExponentialLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt8(makeExpoStr(largeStr, 7)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  },
							 | 
						||
| 
								 | 
							
								  function alt9ExponentialLargeConcats (cb) {
							 | 
						||
| 
								 | 
							
								    stream.write(alt9(makeExpoStr(largeStr, 7)))
							 | 
						||
| 
								 | 
							
								    setImmediate(cb)
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								], 10000)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								run(run)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var rx = /()/
							 | 
						||
| 
								 | 
							
								function alt1 (s) {
							 | 
						||
| 
								 | 
							
								  rx.test(s)
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								function alt2 (s) {
							 | 
						||
| 
								 | 
							
								  rx.exec(s)
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function alt3 (s) {
							 | 
						||
| 
								 | 
							
								  s | 0
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function alt4 (s) {
							 | 
						||
| 
								 | 
							
								  ~s
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function alt5 (s) {
							 | 
						||
| 
								 | 
							
								  escape(s)
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function alt6 (s) {
							 | 
						||
| 
								 | 
							
								  unescape(s)
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function alt7 (s) {
							 | 
						||
| 
								 | 
							
								  parseInt(s, 10)
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function alt8 (s) {
							 | 
						||
| 
								 | 
							
								  parseFloat(s)
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function alt9 (s) {
							 | 
						||
| 
								 | 
							
								  alt9[s] = null
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function makeStr (str, concats) {
							 | 
						||
| 
								 | 
							
								  var s = ''
							 | 
						||
| 
								 | 
							
								  while (concats--) {
							 | 
						||
| 
								 | 
							
								    s += str
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function makeExpoStr (str, concats) {
							 | 
						||
| 
								 | 
							
								  var s = str
							 | 
						||
| 
								 | 
							
								  while (concats--) {
							 | 
						||
| 
								 | 
							
								    s += s
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return s
							 | 
						||
| 
								 | 
							
								}
							 |