github.com/cloudcredo/cloudrocker@v0.0.0-20160108110610-1320f8cc2dfd/sample-apps/node/node_modules/logfmt/examples/speed.sh (about)

     1  #! /usr/bin/env node
     2  
     3  var logfmt = require('../logfmt');
     4  
     5  logfmt.old_parse = function(line) {
     6  
     7    var pairs = line.match(/([a-zA-Z0-9\%\_\-\.\^]+)=?(([a-zA-Z0-9\.\-\_\.\/\@]+)|("([^\"]+)"))?/g)
     8    var attrs = {}
     9  
    10    if(!pairs) { return attrs }
    11  
    12    pairs.forEach(function(pair) {
    13      parts = pair.split("=")
    14      key   = parts.shift()
    15      value = parts.join("=")
    16      //strip quotes
    17      if(value[0] == '"'){
    18        value = value.substring(1, value.length-1)
    19      }
    20      //casts
    21      if(value == '') value = true;
    22      else if(value == 'true') value = true;
    23      else if(value == 'false') value = false;
    24      else if(/^\d+$/.test(value)) value = parseInt(value);
    25      attrs[key] = value
    26    })
    27  
    28    return attrs;
    29  }
    30  
    31  
    32  var args = process.argv.slice(2);
    33  var n = parseInt(args[0]);
    34  
    35  console.log('' + n + ' lines');
    36  
    37  var time = new Date().getTime();
    38  for(i = 0; i < n; i ++){
    39    var test_string = "foo=bar a=14 baz=\"hello kitty\" cool%story=bro f %^asdf code=H12";
    40    logfmt.old_parse(test_string)
    41  }
    42  console.log('parse: ' + (new Date().getTime() - time) + 'ms');
    43  
    44  var time = new Date().getTime();
    45  for(i = 0; i < n; i ++){
    46    var test_string = "foo=bar a=14 baz=\"hello kitty\" cool%story=bro f %^asdf code=H12";
    47    logfmt.parse(test_string)
    48  }
    49  console.log('parse2: ' + (new Date().getTime() - time) + 'ms');