diff options
Diffstat (limited to 'perf/jsonPerfSpec.js')
| -rw-r--r-- | perf/jsonPerfSpec.js | 55 | 
1 files changed, 55 insertions, 0 deletions
| diff --git a/perf/jsonPerfSpec.js b/perf/jsonPerfSpec.js new file mode 100644 index 00000000..c232aed8 --- /dev/null +++ b/perf/jsonPerfSpec.js @@ -0,0 +1,55 @@ +describe('json', function() { +  xit('should parse json in a reasonable time', function() { +    var totalSubstr = 0, +        totalGetMatch = 0, +        totalConsume = 0, +        totalTime = 0, +        runTimes = []; +     +    for (var i=0; i<10; i++) { +      window.substrTime = 0; +      window.getMatchTime = 0; +      window.consumeTime = 0; +      var start = Date.now(); +      expect(angular.fromJson(largeJsonString)).toBeTruthy(); +      var time = Date.now() - start; +//      dump('parse time', time, 'consume', window.consumeTime, +//                               'substr', window.substrTime, +//                               'getMatch', window.getMatchTime); +      totalTime += time; +      totalSubstr += window.substrTime; +      totalGetMatch += window.getMatchTime; +      totalConsume += window.consumeTime; +      runTimes.push(time); +    } + +    totalGetMatch = totalGetMatch - totalSubstr; + +    dump("totals", totalTime, +          "| consume", totalConsume, '' + Math.round(totalConsume/(totalTime/100)) + '%', +          "| substr", totalSubstr, '' + Math.round(totalSubstr/(totalTime/100)) + '%', +          "| getMatch", totalGetMatch, '' + Math.round(totalGetMatch/(totalTime/100)) + '%'); +    dump("run times", runTimes); +    delete window.consumeTime; +    delete window.substrTime; +    delete window.getMatchTime; +  }); + + +  it('angular parser', function() { +    var duration = time(function() { +      expect(angular.fromJson(largeJsonString)).toBeTruthy(); +    }, 1); + +    expect(duration).toBeLessThan(4000); +  }); + + +  it('native json', function() { +    var duration = time(function() { +      expect(JSON.parse(largeJsonString)).toBeTruthy(); +    }, 1); + +    expect(duration).toBeLessThan(200); +  }); +}); | 
