Script Preparation code:
x
 
function decode(input) {
  return decodeURIComponent(input.replace(/\+/g, ' '));
}
function querystringNotPrepared(query) {
  var parser = /([^=?&]+)=?([^&]*)/g
    , result = {}
    , part;
  for (;
    part = parser.exec(query);
    result[decode(part[1])] = decode(part[2])
  );
  return result;
}
var PARSER = /([^=?&]+)=?([^&]*)/g;
function querystringPrepared(query) {
  var result = {}
    , part;
  for (;
    part = PARSER.exec(query);
    result[decode(part[1])] = decode(part[2])
  );
  return result;
}
Tests:
  • not prepared

     
    querystringNotPrepared( 'foo=bar&bar=foo' );
  • prepared

     
    querystringPrepared( 'foo=bar&bar=foo' );
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    not prepared
    prepared

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 7 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.79 Safari/537.36
Chrome 61 on Mac OS X 10.12.6
View result in a separate tab
Test name Executions per second
not prepared 268078.1 Ops/sec
prepared 250046.7 Ops/sec