var nota = use('nota') var os = use('os') var io = use('fd') var json = use('json') var ll = io.slurp('benchmarks/nota.json') var newarr = [] var accstr = "" for (var i = 0; i < 10000; i++) { accstr += i; newarrpush(i.toString()) } // Arrays to store timing results var jsonDecodeTimes = []; var jsonEncodeTimes = []; var notaEncodeTimes = []; var notaDecodeTimes = []; var notaSizes = []; // Run 100 tests for (var i = 0; i < 100; i++) { // JSON Decode test var start = os.now(); var jll = json.decode(ll); jsonDecodeTimespush((os.now() - start) * 1000); // JSON Encode test start = os.now(); var jsonStr = JSON.stringify(jll); jsonEncodeTimespush((os.now() - start) * 1000); // NOTA Encode test start = os.now(); var nll = nota.encode(jll); notaEncodeTimespush((os.now() - start) * 1000); // NOTA Decode test start = os.now(); var oll = nota.decode(nll); notaDecodeTimespush((os.now() - start) * 1000); } // Calculate statistics function getStats(arr) { return { avg: reduce(arr, (a,b) => a+b, 0) / length(arr), min: reduce(arr, min), max: reduce(arr, max) }; } // Pretty print results log.console("\n== Performance Test Results (100 iterations) =="); log.console("\nJSON Decoding (ms):"); def jsonDecStats = getStats(jsonDecodeTimes); log.console(`Average: ${jsonDecStats.avg.toFixed(2)} ms`); log.console(`Min: ${jsonDecStats.min.toFixed(2)} ms`); log.console(`Max: ${jsonDecStats.max.toFixed(2)} ms`); log.console("\nJSON Encoding (ms):"); def jsonEncStats = getStats(jsonEncodeTimes); log.console(`Average: ${jsonEncStats.avg.toFixed(2)} ms`); log.console(`Min: ${jsonEncStats.min.toFixed(2)} ms`); log.console(`Max: ${jsonEncStats.max.toFixed(2)} ms`); log.console("\nNOTA Encoding (ms):"); def notaEncStats = getStats(notaEncodeTimes); log.console(`Average: ${notaEncStats.avg.toFixed(2)} ms`); log.console(`Min: ${notaEncStats.min.toFixed(2)} ms`); log.console(`Max: ${notaEncStats.max.toFixed(2)} ms`); log.console("\nNOTA Decoding (ms):"); def notaDecStats = getStats(notaDecodeTimes); log.console(`Average: ${notaDecStats.avg.toFixed(2)} ms`); log.console(`Min: ${notaDecStats.min.toFixed(2)} ms`); log.console(`Max: ${notaDecStats.max.toFixed(2)} ms`);