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');