RGB to hex (v6)

Revision 6 of this benchmark created by Mathias Bynens on


Setup

var red = 0,
        green = 150,
        blue = 145.67;
    
    // Raphaël.js
    function raphael(red, green, blue) {
      var r = (~~red).toString(16),
          g = (~~green).toString(16),
          b = (~~blue).toString(16);
      return r + g + b;
    }
    
    function rgbtohex2(red, green, blue) {
      return '#' + (0x1000000 | blue | (green << 8) | (red << 16)).toString(16).slice(1);
    }
    
    // Garrett’s
    function garrett(r, g, b) {
      return (toHexString = _toHexString)(r,g,b);
      function _toHexString(r, g, b) {
        return "#" + toHexByte(r) + toHexByte(g) + toHexByte(b);
      }
      function toHexByte(bite) {
        var hex = bite.toString(16);
        return (hex.length === 2 ? hex : "0" + hex);
      }
    }
    
    // atesgoral’s
    function atesgoral(a,b,c) {
      return"#" + ((256 + a << 8 | b) << 8 | c).toString(16).slice(1);
    }
    
    // Asen’s
    function asen(r, g, b) {
      return ("00000" + (r << 16 | g << 8 | b).toString(16)).slice(-6);
    }

Test runner

Ready to run.

Testing in
TestOps/sec
Raphael
raphael(red, green, blue);
ready
2
rgbtohex2(red, green, blue);
ready
Garrett’s
toHexString(red, green, blue);
ready
atesgoral’s
atesgoral(red, green, blue);
ready
Asen’s
asen(red, green, blue);
ready

Revisions

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

  • Revision 6: published by Mathias Bynens on