Fast base64 encoding in js. And test results.
Sunday, November 21, 2010 2:02:12 PM
function encodeBase64(str){
var chr1, chr2, chr3, rez = '', arr = [], i = 0, j = 0, code = 0;
var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='.split('');
while(code = str.charCodeAt(j++)){
if(code < 128){
arr[arr.length] = code;
}
else if(code < 2048){
arr[arr.length] = 192 | (code >> 6);
arr[arr.length] = 128 | (code & 63);
}
else if(code < 65536){
arr[arr.length] = 224 | (code >> 12);
arr[arr.length] = 128 | ((code >> 6) & 63);
arr[arr.length] = 128 | (code & 63);
}
else{
arr[arr.length] = 240 | (code >> 18);
arr[arr.length] = 128 | ((code >> 12) & 63);
arr[arr.length] = 128 | ((code >> 6) & 63);
arr[arr.length] = 128 | (code & 63);
}
};
while(i < arr.length){
chr1 = arr[i++];
chr2 = arr[i++];
chr3 = arr[i++];
rez += chars[chr1 >> 2];
rez += chars[((chr1 & 3) << 4) | (chr2 >> 4)];
rez += chars[chr2 === undefined ? 64 : ((chr2 & 15) << 2) | (chr3 >> 6)];
rez += chars[chr3 === undefined ? 64 : chr3 & 63];
};
return rez;
};
convertStringToBase64 - http://dev.opera.com/libraries/base64encoder/
Base64.encode - http://www.webtoolkit.info/javascript-base64.html
http://ruzanow.ru/test/test_base64.html on Core 2 Duo 2.66 GHz:
Chrome 9
convertStringToBase64: 19 ms
encodeBase64: 38 ms
Base64.encode: 75 ms
encodeBtoa: 13 ms
Firefox 4.0 beta 7
convertStringToBase64: 36 ms
encodeBase64: 18 ms
Base64.encode: 30 ms
encodeBtoa: 15 ms
Opera 11
convertStringToBase64: 71 ms
encodeBase64: 31 ms
Base64.encode: 61 ms
encodeBtoa: 31 ms
Firefox 3.6
convertStringToBase64: 190 ms
encodeBase64: 36 ms
Base64.encode: 60 ms
encodeBtoa: 27 ms
Chrome 2
convertStringToBase64: 366 ms
encodeBase64: 88 ms
Base64.encode: 161 ms
encodeBtoa: 80 ms
Opera 9.6
convertStringToBase64: 422 ms
encodeBase64: 188 ms
Base64.encode: 531 ms
IE8
convertStringToBase64: 468 ms
encodeBase64: 313 ms
Base64.encode: 875 ms
Opera 9.2
convertStringToBase64: 656 ms
encodeBase64: 516 ms
Base64.encode: 1109 ms
Opera 8.5
convertStringToBase64: 14219 ms
encodeBase64: 4250 ms
Base64.encode: 11672 ms
IE6 (first 30000 symbols only)
convertStringToBase64: 11781 ms
encodeBase64: 6235 ms
encodeBase64 with rez.join(''): 125 ms
Base64.encode: 922 ms
Resume.
encodeBase64 is fastest method in Opera.
window.btoa in Opera not fast and slightly bugged: javascript:alert(atob(btoa('ф'))) == 'D', instead of error.

Unregistered user # Saturday, June 18, 2011 7:38:01 PM
Unregistered user # Saturday, June 18, 2011 7:41:54 PM
Unregistered user # Saturday, June 18, 2011 7:45:22 PM
Unregistered user # Friday, August 19, 2011 7:22:52 PM