add benchmark for measuring parser performance
parent
dc23350847
commit
670c9f9b74
|
@ -0,0 +1,38 @@
|
|||
const std = @import("std");
|
||||
const mem = std.mem;
|
||||
const warn = std.debug.warn;
|
||||
const Tokenizer = std.zig.Tokenizer;
|
||||
const Parser = std.zig.Parser;
|
||||
const io = std.io;
|
||||
|
||||
const source = @embedFile("../os/index.zig");
|
||||
var fixed_buffer_mem: [10 * 1024 * 1024]u8 = undefined;
|
||||
|
||||
pub fn main() !void {
|
||||
var i: usize = 0;
|
||||
var timer = try std.os.time.Timer.start();
|
||||
const start = timer.lap();
|
||||
const iterations = 100;
|
||||
var memory_used: usize = 0;
|
||||
while (i < iterations) : (i += 1) {
|
||||
memory_used += testOnce();
|
||||
}
|
||||
const end = timer.read();
|
||||
memory_used /= iterations;
|
||||
const elapsed_s = f64(end - start) / std.os.time.ns_per_s;
|
||||
const bytes_per_sec = f64(source.len * iterations) / elapsed_s;
|
||||
const mb_per_sec = bytes_per_sec / (1024 * 1024);
|
||||
|
||||
var stdout_file = try std.io.getStdOut();
|
||||
const stdout = &std.io.FileOutStream.init(&stdout_file).stream;
|
||||
try stdout.print("{.3} MB/s, {} KB used \n", mb_per_sec, memory_used / 1024);
|
||||
}
|
||||
|
||||
fn testOnce() usize {
|
||||
var fixed_buf_alloc = std.heap.FixedBufferAllocator.init(fixed_buffer_mem[0..]);
|
||||
var allocator = &fixed_buf_alloc.allocator;
|
||||
var tokenizer = Tokenizer.init(source);
|
||||
var parser = Parser.init(&tokenizer, allocator, "(memory buffer)");
|
||||
_ = parser.parse() catch @panic("parse failure");
|
||||
return fixed_buf_alloc.end_index;
|
||||
}
|
Loading…
Reference in New Issue