summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTaylan Kammer <taylan.kammer@gmail.com>2025-03-02 19:50:03 +0100
committerTaylan Kammer <taylan.kammer@gmail.com>2025-03-02 19:50:03 +0100
commit45ed12c1bcb8db5cb35c35495023ffaf24e2877c (patch)
tree5bf27968999f1b76e62ac998bc3315abe9501c36 /src
parentcc2ad52a4247067d05979e5c075d29fa376e6d66 (diff)
improve benchmark
Diffstat (limited to 'src')
-rw-r--r--src/libzisp.zig9
-rw-r--r--src/libzisp/value.zig2
2 files changed, 9 insertions, 2 deletions
diff --git a/src/libzisp.zig b/src/libzisp.zig
index acaf002..d610f4e 100644
--- a/src/libzisp.zig
+++ b/src/libzisp.zig
@@ -299,9 +299,14 @@ test "parse4" {
}
test "parse bench" {
+ const iters = switch (@import("builtin").mode) {
+ .Debug, .ReleaseSmall => 1000,
+ .ReleaseSafe => 10_000,
+ .ReleaseFast => 100_000,
+ };
var timer = try std.time.Timer.start();
std.mem.doNotOptimizeAway(timer.lap());
- for (0..1000) |i| {
+ for (0..iters) |i| {
_ = i;
std.mem.doNotOptimizeAway(io.parser.parse(
\\(a b c (x y z (a b c (x y z (a b c (x y z (a b c (x y z (a b c
@@ -311,7 +316,7 @@ test "parse bench" {
}
const ns: f64 = @floatFromInt(timer.lap());
const secs = ns / 1_000_000_000;
- std.debug.print("parse: {d:.3}s\n", .{secs});
+ std.debug.print("parse {} times: {d:.3}s\n", .{ iters, secs });
}
test "unparse" {
diff --git a/src/libzisp/value.zig b/src/libzisp/value.zig
index fbe7dbe..6c0c2e9 100644
--- a/src/libzisp/value.zig
+++ b/src/libzisp/value.zig
@@ -169,6 +169,8 @@ pub const OtherTag = enum(u3) { rune, sstr, qstr, char, misc };
pub const MiscValue = enum(u8) { f, t, nil, eof, undef = 255 };
+pub const undef = Value{ .misc = .{ .value = .undef } };
+
/// Represents a Zisp value/object.
pub const Value = packed union {
/// To get the value as a regular double.