mirror of
https://github.com/ziglang/zig.git
synced 2026-01-29 02:35:28 +00:00
added adapter to AnyWriter and GenericWriter to help bridge the gap
between old and new API
make std.testing.expectFmt work at compile-time
std.fmt no longer has a dependency on std.unicode. Formatted printing
was never properly unicode-aware. Now it no longer pretends to be.
Breakage/deprecations:
* std.fs.File.reader -> std.fs.File.deprecatedReader
* std.fs.File.writer -> std.fs.File.deprecatedWriter
* std.io.GenericReader -> std.io.Reader
* std.io.GenericWriter -> std.io.Writer
* std.io.AnyReader -> std.io.Reader
* std.io.AnyWriter -> std.io.Writer
* std.fmt.format -> std.fmt.deprecatedFormat
* std.fmt.fmtSliceEscapeLower -> std.ascii.hexEscape
* std.fmt.fmtSliceEscapeUpper -> std.ascii.hexEscape
* std.fmt.fmtSliceHexLower -> {x}
* std.fmt.fmtSliceHexUpper -> {X}
* std.fmt.fmtIntSizeDec -> {B}
* std.fmt.fmtIntSizeBin -> {Bi}
* std.fmt.fmtDuration -> {D}
* std.fmt.fmtDurationSigned -> {D}
* {} -> {f} when there is a format method
* format method signature
- anytype -> *std.io.Writer
- inferred error set -> error{WriteFailed}
- options -> (deleted)
* std.fmt.Formatted
- now takes context type explicitly
- no fmt string
39 lines
1.3 KiB
Zig
39 lines
1.3 KiB
Zig
const std = @import("std");
|
|
const mem = std.mem;
|
|
const Tokenizer = std.zig.Tokenizer;
|
|
const io = std.io;
|
|
const fmtIntSizeBin = std.fmt.fmtIntSizeBin;
|
|
|
|
const source = @embedFile("../os.zig");
|
|
var fixed_buffer_mem: [10 * 1024 * 1024]u8 = undefined;
|
|
|
|
pub fn main() !void {
|
|
var i: usize = 0;
|
|
var timer = try std.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 = @as(f64, @floatFromInt(end - start)) / std.time.ns_per_s;
|
|
const bytes_per_sec_float = @as(f64, @floatFromInt(source.len * iterations)) / elapsed_s;
|
|
const bytes_per_sec = @as(u64, @intFromFloat(@floor(bytes_per_sec_float)));
|
|
|
|
var stdout_file: std.fs.File = .stdout();
|
|
const stdout = stdout_file.deprecatedWriter();
|
|
try stdout.print("parsing speed: {:.2}/s, {:.2} used \n", .{
|
|
fmtIntSizeBin(bytes_per_sec),
|
|
fmtIntSizeBin(memory_used),
|
|
});
|
|
}
|
|
|
|
fn testOnce() usize {
|
|
var fixed_buf_alloc = std.heap.FixedBufferAllocator.init(fixed_buffer_mem[0..]);
|
|
const allocator = fixed_buf_alloc.allocator();
|
|
_ = std.zig.Ast.parse(allocator, source, .zig) catch @panic("parse failure");
|
|
return fixed_buf_alloc.end_index;
|
|
}
|