Skip to content

Commit 5b9b5e4

Browse files
wooster0andrewrk
authored andcommitted
std.fmt.digits2: optimize for ReleaseSmall
Difference: ``` $ cat x.zig const std = @import("std"); pub const std_options = std.Options{ .keep_sigpipe = true }; pub fn main() void { std.io.getStdOut().writer().print("{d}\n", .{@intFromPtr(std.os.argv.ptr)}) catch {}; } $ zig build-exe x.zig -OReleaseSmall -fsingle-threaded -fno-unwind-tables && wc -c x 2576 x $ zig build-exe x.zig -OReleaseSmall -fsingle-threaded -fno-unwind-tables --zig-lib-dir ../zig/lib && wc -c x 2424 x ```
1 parent de87412 commit 5b9b5e4

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

lib/std/fmt.zig

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1252,9 +1252,13 @@ pub fn formatIntBuf(out_buf: []u8, value: anytype, base: u8, case: Case, options
12521252
return fbs.pos;
12531253
}
12541254

1255-
// Converts values in the range [0, 100) to a string.
1256-
pub fn digits2(value: usize) [2]u8 {
1257-
return "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899"[value * 2 ..][0..2].*;
1255+
/// Converts values in the range [0, 100) to a base 10 string.
1256+
pub fn digits2(value: u8) [2]u8 {
1257+
if (builtin.mode == .ReleaseSmall) {
1258+
return .{ @intCast('0' + value / 10), @intCast('0' + value % 10) };
1259+
} else {
1260+
return "00010203040506070809101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899"[value * 2 ..][0..2].*;
1261+
}
12581262
}
12591263

12601264
const FormatDurationData = struct {

0 commit comments

Comments
 (0)