Nice article, I especially liked part about HTTP/2 multiplexing, indeed - every web server should make this requirement a MUST HAVE. However I can't agree on your note that :
Using the Switch case over if/else enables developers to shorten execution time
I can't believe in this - at a lower level both code structures should be compiled into some sort of goto conditional jumps. Let's check. I've made a JS benchmark.
This is switch block:
var rnd = Math.floor(Math.random() * 5);
switch(rnd) {
case 1:
rnd += 1;
break;
case 2:
rnd += 2;
break;
default:
rnd += -1;
}
and this is if/else block :
var rnd = Math.floor(Math.random() * 5);
if (rnd == 1) {
rnd += 1;
}
else if (rnd == 2) {
rnd += 2;
}
else {
rnd += -1;
}
After pasting these blocks into jsbench.me performance comparison suite,- I've got results that switch block is SLOWER by [0% - 2%] on average. Given many unknown factors - how these tests are executed, JS implementation differences between browsers, execution speed measurement errors, biased outcome (maybe after 1000 or more runs performance difference would be 0%) and etc. - it would be rational to neglect these small execution time differences and for practical purposes keep that both should run at the same rate.
Nice article, I especially liked part about HTTP/2 multiplexing, indeed - every web server should make this requirement a MUST HAVE. However I can't agree on your note that :
I can't believe in this - at a lower level both code structures should be compiled into some sort of goto conditional jumps. Let's check. I've made a JS benchmark. This is switch block:
var rnd = Math.floor(Math.random() * 5); switch(rnd) { case 1: rnd += 1; break; case 2: rnd += 2; break; default: rnd += -1; }and this is if/else block :
var rnd = Math.floor(Math.random() * 5); if (rnd == 1) { rnd += 1; } else if (rnd == 2) { rnd += 2; } else { rnd += -1; }After pasting these blocks into jsbench.me performance comparison suite,- I've got results that switch block is SLOWER by [0% - 2%] on average. Given many unknown factors - how these tests are executed, JS implementation differences between browsers, execution speed measurement errors, biased outcome (maybe after 1000 or more runs performance difference would be 0%) and etc. - it would be rational to neglect these small execution time differences and for practical purposes keep that both should run at the same rate.