Ways to 0-pad a number (v7)

Revision 7 of this benchmark created by billy on


Description

There are lots of ways to zero-pad a number in JavaScript. Which is fastest?

(improved loop performance when at least one zero will be added)

Setup

/**
     * Pad a number with leading zeros to "pad" places:
     *
     * @param number: The number to pad
     * @param pad: The maximum number of leading zeros
     */
    function padNumberMath(number, pad) {
        var N = Math.pow(10, pad);
        return number < N ? ("" + (N + number)).slice(1) : "" + number
    }
    function padNumberArray(n, len) {
      return (new Array(len + 1).join('0') + n).slice(-len);
    }
    function padNumberLoop(number, length) {
        var my_string = '' + number;
        for (var to_add = length - my_string.length; to_add > 0; to_add -= 1) {
            my_string = '0' + my_string;
        }
        return my_string;
    }
    
    function sliceFunc() {
        return "hello".slice(1);
    }
    
    function concatFunc() {
        var str = "a" ;
        return str + 'b' ;
    }
    
    function powFunc(){
        var base = 10 ;
        var exp = 10 ;
        return Math.pow( base, exp ) ;
    }
    
    
    function dead(){ }

Test runner

Ready to run.

Testing in
TestOps/sec
Math
padNumberMath(1301, 4);
padNumberMath(120, 4);
padNumberMath(14, 4);
padNumberMath(9, 4);
 
ready
Array join
padNumberArray(1301, 4);
padNumberArray(120, 4);
padNumberArray(14, 4);
padNumberArray(9, 4);
 
ready
Loop
padNumberLoop(1301, 4);
padNumberLoop(120, 4);
padNumberLoop(14, 4);
padNumberLoop(9, 4);
 
ready
.slice()
var res = sliceFunc() ;
ready
concatenation
var c = concatFunc() ;
ready
pow
var val = powFunc() ;
ready
no op (dead)
dead() ;
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.