From 134a7df8206aa66ca7b0abbc7f31f08410b502d2 Mon Sep 17 00:00:00 2001 From: Jose Colon Rodriguez Date: Tue, 20 Feb 2024 09:13:36 -0400 Subject: Replaced ccc_map with table. 20ms faster --- src/main.zig | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/main.zig') diff --git a/src/main.zig b/src/main.zig index 019076a..946ae01 100644 --- a/src/main.zig +++ b/src/main.zig @@ -5,10 +5,12 @@ const std = @import("std"); // const codePointWidth = @import("ziglyph").display_width.codePointWidth; // const codePointWidth = @import("display_width").codePointWidth; // const strWidth = @import("ziglyph").display_width.strWidth; -const strWidth = @import("display_width").strWidth; +// const strWidth = @import("display_width").strWidth; // const CodePointIterator = @import("CodePoint").CodePointIterator; // const ascii = @import("ascii"); // const ascii = std.ascii; +// const norm = @import("ziglyph").Normalizer; +const norm = @import("Normalizer"); pub fn main() !void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; @@ -18,6 +20,9 @@ pub fn main() !void { const input = try std.fs.cwd().readFileAlloc(allocator, "data/lang_mix.txt", std.math.maxInt(u32)); defer allocator.free(input); + var n = try norm.init(allocator); + defer n.deinit(); + // var iter = GraphemeIterator.init(input); // var iter = CodePointIterator{ .bytes = input }; var iter = std.mem.splitScalar(u8, input, '\n'); @@ -28,7 +33,12 @@ pub fn main() !void { // while (iter.next()) |cp| result += codePointWidth(@intCast(cp.code)); // while (iter.next()) |_| result += 1; - while (iter.next()) |line| result += strWidth(line); + // while (iter.next()) |line| result += strWidth(line); + while (iter.next()) |line| { + var nfc = try n.nfc(allocator, line); + result += nfc.slice.len; + nfc.deinit(); + } std.debug.print("result: {}, took: {}\n", .{ result, timer.lap() / std.time.ns_per_ms }); } -- cgit v1.2.3