77 lines
2.2 KiB
Plaintext
77 lines
2.2 KiB
Plaintext
var nota = use('nota')
|
|
var os = use('os')
|
|
var io = use('io')
|
|
|
|
var ll = io.slurp('benchmarks/nota.json')
|
|
|
|
var newarr = []
|
|
var accstr = ""
|
|
for (var i = 0; i < 10000; i++) {
|
|
accstr += i;
|
|
newarr.push(i.toString())
|
|
}
|
|
// Arrays to store timing results
|
|
var jsonDecodeTimes = [];
|
|
var jsonEncodeTimes = [];
|
|
var notaEncodeTimes = [];
|
|
var notaDecodeTimes = [];
|
|
var notaSizes = [];
|
|
|
|
// Run 100 tests
|
|
for (let i = 0; i < 100; i++) {
|
|
// JSON Decode test
|
|
let start = os.now();
|
|
var jll = json.decode(ll);
|
|
jsonDecodeTimes.push((os.now() - start) * 1000);
|
|
|
|
// JSON Encode test
|
|
start = os.now();
|
|
let jsonStr = JSON.stringify(jll);
|
|
jsonEncodeTimes.push((os.now() - start) * 1000);
|
|
|
|
// NOTA Encode test
|
|
start = os.now();
|
|
var nll = nota.encode(jll);
|
|
notaEncodeTimes.push((os.now() - start) * 1000);
|
|
|
|
// NOTA Decode test
|
|
start = os.now();
|
|
var oll = nota.decode(nll);
|
|
notaDecodeTimes.push((os.now() - start) * 1000);
|
|
}
|
|
|
|
// Calculate statistics
|
|
function getStats(arr) {
|
|
def avg = arr.reduce((a, b) => a + b) / arr.length;
|
|
def min = Math.min(...arr);
|
|
def max = Math.max(...arr);
|
|
return { avg, min, 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`);
|
|
|