Skip to content

Instantly share code, notes, and snippets.

@mogya
Last active December 16, 2015 23:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mogya/5517324 to your computer and use it in GitHub Desktop.
Save mogya/5517324 to your computer and use it in GitHub Desktop.
javascript argument check benchmarks.
LOOP = 10000000;
var start, end;
// logging
function log(msg){
return console.log(msg);
}
function checkStrTernary(arg){
start = new Date();
for(var i=0; i<LOOP; i++){
var ret = (arg=='foo')? arg : 'bar';
}
end = new Date();
log('[checkStrTernary]\t' + (end-start));
}
function checkStrIf(arg){
start = new Date();
for(var i=0; i<LOOP; i++){
var ret;
if(arg=='foo'){
ret = arg;
} else {
ret = 'bar';
}
}
end = new Date();
log('[checkStrIf]\t'+ (end-start));
}
function checkArgsLogicalAdd(arg){
start = new Date();
for(var i=0; i<LOOP; i++){
var ret = arg || 'bar';
}
end = new Date();
log('[checkArgsLogicalAdd]\t ' + (end-start));
}
function checkArgsTernary(arg){
start = new Date();
for(var i=0; i<LOOP; i++){
var ret = arg ? arg : 'bar';
}
end = new Date();
log('[checkArgsTernary]\t ' + (end-start));
}
function checkArgsIf(arg){
start = new Date();
for(var i=0; i<LOOP; i++){
var ret;
if(arg) {
ret = arg;
} else {
ret = 'bar';
}
}
end = new Date();
log('[checkArgsIf] \t' + (end-start));
}
function checkArgsIf2(arg){
start = new Date();
for(var i=0; i<LOOP; i++){
if(!arg) { arg = 'bar';}
}
end = new Date();
log('[checkArgsIf2] \t' + (end-start));
}
function checkNullTernary(arg){
start = new Date();
for(var i=0; i<LOOP; i++){
var ret = (arg!=null)? arg : 'bar';
}
end = new Date();
log('[checkNullTernary] \t' + (end-start));
}
function checkNullIf(arg){
start = new Date();
for(var i=0; i<LOOP; i++){
var ret;
if(arg != null){
ret = arg;
} else {
ret = 'bar';
}
}
end = new Date();
log('[checkNullIf] \t' + (end-start));
}
function checkTypeTernary(arg){
start = new Date();
for(var i=0; i<LOOP; i++){
var ret = (typeof(arg) != 'undefined')? arg : 'bar';
}
end = new Date();
log('[checkTypeTernary] \t' + (end-start));
}
function checkTypeIf(arg){
var ret;
start = new Date();
for(var i=0; i<LOOP; i++){
if(typeof arg != 'undefined'){
ret = arg;
} else {
ret = 'bar';
}
}
end = new Date();
log('[checkTypeIf] \t' + (end-start));
}
/*
* Testing
*/
(function(arg){
checkStrTernary(arg);
checkStrIf(arg);
checkArgsLogicalAdd(arg)
checkArgsTernary(arg);
checkArgsIf(arg);
checkArgsIf2(arg);
checkNullTernary(arg);
checkNullIf(arg);
checkTypeTernary(arg);
checkTypeIf(arg);
})(true /*false*/);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment