Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Fetch cookie value
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36
Browser:
Chrome 130
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Regex loop
351889.3 Ops/sec
Regex
434388.0 Ops/sec
Original
443214.2 Ops/sec
Original reversed
423295.9 Ops/sec
LastIndexOf
890045.5 Ops/sec
LastIndexOf B
882782.2 Ops/sec
LastIndexOf 2
587480.6 Ops/sec
Script Preparation code:
function getCookieIX_B(name, str,idx) { name = "; " + name + "="; var ck = str || document.cookie; ck = "; " + ck; if ((idx = ck.lastIndexOf(name)) == -1) { return undefined; } var nameLength = name.length; var p1 = ck.substring(idx + nameLength); var idx2 = p1.indexOf(";"); idx2 = idx2==-1 ? undefined : idx2; var p2 = p1.substring(0, idx2); return decodeURIComponent(p2); } function getCookieIX(name,str){ name = name+'='; var ck = str || document.cookie; var idx = ck.lastIndexOf(name); if(idx==-1){ return undefined} var nameLength = name.length; var p1 = ck.substring(idx+nameLength); var idx2 = p1.indexOf(';'); if(idx2>-1){ p1 = p1.substring(0,idx2); } return decodeURIComponent(p1); } function getCookieIX2(name, str,idx) { name = "; " + name + "="; var ck = str || document.cookie; ck = "; " + ck; if ((idx = ck.lastIndexOf(name)) == -1) { return undefined; } var nameLength = name.length; var p1 = ck.substring(idx + nameLength); p1 = p1.split(';')[0]; return decodeURIComponent(p1); } function getCookie(name,str) { var nameEQ = name + "="; var ca = (str||document.cookie).split(";"); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == " ") c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) { var d = c.substring(nameEQ.length, c.length); d = decodeURIComponent(d); return d; } } return undefined; } function getCookieM(name,str) { name = name + ""; var re = new RegExp("(^| )" + name + "=([^;]+)", "gmi"); var m = (str||document.cookie).match(re); if (!!m) { m = m.pop(); m = m.substring(m.indexOf("=") + 1); m = !!m ? decodeURIComponent(m) : m; return m; } } function getCookieW(name, str) { var str = str || document.cookie; var re = new RegExp("(?:^|; )("+name+"+?)(?:=([^;]*))?(?:;|$)", "gi"); var value; var match; while ((match = re.exec(str))) { re.lastIndex = match.index + match.length - 1; var k = match[1]; var v = decodeURIComponent(match[2]); !!v && (value = v); } return value; } function getCookieR(name,str) { var nameEQ = name + "="; var ca = (str||document.cookie).split(";"); var cal = ca.length; for (var i = cal; i >= 0; i--) { var c = ca[i]; if (!!c) { c = c.trim(); if (c.indexOf(nameEQ) == 0) { var d = c.substring(nameEQ.length, c.length); d = decodeURIComponent(d); return d; } } } return undefined; } function generateTestData(){ let foo = []; for (let i = 0; i < 20; i++) { var x = i+1; foo.push('foo_'+x+'='+'bar_'+x+'_'+performance.now()); foo.push('foo_'+x+'='+'bar_second_'+x+'_'+performance.now()); } foo = foo.join('; '); return foo; } var hay = generateTestData();
Tests:
Regex loop
getCookieW('foo_10',hay)
Regex
getCookieM('foo_10',hay)
Original
getCookie('foo_10',hay)
Original reversed
getCookieR('foo_10',hay)
LastIndexOf
getCookieIX('foo_10',hay)
LastIndexOf B
getCookieIX_B('foo_10',hay)
LastIndexOf 2
getCookieIX2('foo_10',hay)