node.js - break + return vs return Javascript Nodejs -


i writing nodejs heap , performance important. have following code:

while(true) if(x)   return if(y)  ...  return if(z)  ... else  return 

i advised use

break

instead of

return

and put single return @ end avoid duplicate code , make more readable. there performance drop , if significant?

in other words:

is there downside using breaks in loop use return after loop instead of using return in first place?

i wrote following code attempt test problem:

// license: public domain var mode = process.argv[2] === 'break' ? false : true; var iterations = process.argv[3] ? process.argv[1] : 1e9; var testiterations = process.argv[4] ? process.argv[2] : 1e4; var number; var range = 1e9;  function testa () {     (var = 0; < testiterations; i++) {         number = math.floor(math.random() * range);         if (math.floor(number/2) === number/2) {             number = number/2;             return number;         }         if (number * number > number + number) {             number = number * 2;             return number;         }         if (number) {             number = math.pow(2, math.ceil(math.random()*16));             return number;         }         if (1 === true || 1 == true) {             number = number - number*number + math.pow(number, math.pi);             return number;         }     } }  function testb () {     (var = 0; < testiterations; i++) {         number = math.floor(math.random() * range);         if (math.floor(number/2) === number/2) {             number = number/2;             break;         }         if (number * number > number + number) {             number = number * 2;             break;         }         if (number) {             number = math.pow(2, math.ceil(math.random()*16));             break;         }         if (1 === true || 1 == true) {             number = number - number*number + math.pow(number, math.pi);             break;         }     }     return number; }  console.log('benchmarking ' + (mode ? 'return' : 'break')); console.time('benchmark'); if (mode) {     (var = 0; < iterations; i++) {         var result = testa();     } } else {     (var = 0; < iterations; i++) {         var result = testb();     } } console.timeend('benchmark'); 

upon execution got these results (5 samples):

  1. benchmarking break: 22262ms benchmarking return: 21947ms

  2. benchmarking break: 22549ms benchmarking return: 22180ms

  3. benchmarking break: 22443ms benchmarking return: 22143ms

  4. benchmarking break: 22304ms benchmarking return: 22109ms

  5. benchmarking break: 22293ms benchmarking return: 22003ms

total: break: 111851ms, return: 110382ms, difference: 1469ms (1.3%)

if benchmark code similar yours i'd safely there no significant performance difference between both variations.


Comments