Commit 8284da2f3d

Kendall Condon <goon.pri.low@gmail.com>
2025-11-11 22:14:39
flate.Compress: simplify huffman node comparisons
Instead of comparing each field, nodes are now compared as 32-bit values where `freq` is in the most significant bits.
1 parent d6931b0
Changed files (1)
lib
std
compress
lib/std/compress/flate/Compress.zig
@@ -993,14 +993,15 @@ const huffman = struct {
     const max_leafs = 286;
     const max_nodes = max_leafs * 2;
 
-    const Node = struct {
-        freq: u16,
+    const Node = packed struct(u32) {
         depth: u16,
+        freq: u16,
 
         pub const Index = u16;
 
+        /// `freq` is more significant than `depth`
         pub fn smaller(a: Node, b: Node) bool {
-            return if (a.freq != b.freq) a.freq < b.freq else a.depth < b.depth;
+            return @as(u32, @bitCast(a)) < @as(u32, @bitCast(b));
         }
     };