51fdbf7f8c
Some performance comparisons to C. We take the fastest time measurement taken across multiple runs. The block hashing functions use the same md5/sha1 methods. ``` Cpu: Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz Gcc: 7.2.1 20171224 Clang: 5.0.1 Zig: 0.1.1.304f6f1d ``` See https://www.nayuki.io/page/fast-md5-hash-implementation-in-x86-assembly: ``` gcc -O2 661 Mb/s clang -O2 490 Mb/s zig --release-fast and zig --release-safe 570 Mb/s zig 50 Mb/s ``` See https://www.nayuki.io/page/fast-sha1-hash-implementation-in-x86-assembly: ``` gcc -O2 588 Mb/s clang -O2 563 Mb/s zig --release-fast and zig --release-safe 610 Mb/s zig 21 Mb/s ``` In short, zig provides pretty useful tools for writing this sort of code. We are in the lead against clang (which uses the same LLVM backend) with us being slower only against md5 with GCC.
61 lines
2.1 KiB
Zig
61 lines
2.1 KiB
Zig
pub const ArrayList = @import("array_list.zig").ArrayList;
|
|
pub const AlignedArrayList = @import("array_list.zig").AlignedArrayList;
|
|
pub const BufMap = @import("buf_map.zig").BufMap;
|
|
pub const BufSet = @import("buf_set.zig").BufSet;
|
|
pub const Buffer = @import("buffer.zig").Buffer;
|
|
pub const BufferOutStream = @import("buffer.zig").BufferOutStream;
|
|
pub const HashMap = @import("hash_map.zig").HashMap;
|
|
pub const LinkedList = @import("linked_list.zig").LinkedList;
|
|
|
|
pub const base64 = @import("base64.zig");
|
|
pub const build = @import("build.zig");
|
|
pub const c = @import("c/index.zig");
|
|
pub const crypto = @import("crypto/index.zig");
|
|
pub const cstr = @import("cstr.zig");
|
|
pub const debug = @import("debug/index.zig");
|
|
pub const dwarf = @import("dwarf.zig");
|
|
pub const elf = @import("elf.zig");
|
|
pub const empty_import = @import("empty.zig");
|
|
pub const endian = @import("endian.zig");
|
|
pub const fmt = @import("fmt/index.zig");
|
|
pub const heap = @import("heap.zig");
|
|
pub const io = @import("io.zig");
|
|
pub const math = @import("math/index.zig");
|
|
pub const mem = @import("mem.zig");
|
|
pub const net = @import("net.zig");
|
|
pub const os = @import("os/index.zig");
|
|
pub const rand = @import("rand.zig");
|
|
pub const sort = @import("sort.zig");
|
|
pub const unicode = @import("unicode.zig");
|
|
|
|
test "std" {
|
|
// run tests from these
|
|
_ = @import("array_list.zig");
|
|
_ = @import("buf_map.zig");
|
|
_ = @import("buf_set.zig");
|
|
_ = @import("buffer.zig");
|
|
_ = @import("hash_map.zig");
|
|
_ = @import("linked_list.zig");
|
|
|
|
_ = @import("base64.zig");
|
|
_ = @import("build.zig");
|
|
_ = @import("c/index.zig");
|
|
_ = @import("crypto/index.zig");
|
|
_ = @import("cstr.zig");
|
|
_ = @import("debug/index.zig");
|
|
_ = @import("dwarf.zig");
|
|
_ = @import("elf.zig");
|
|
_ = @import("empty.zig");
|
|
_ = @import("endian.zig");
|
|
_ = @import("fmt/index.zig");
|
|
_ = @import("io.zig");
|
|
_ = @import("math/index.zig");
|
|
_ = @import("mem.zig");
|
|
_ = @import("heap.zig");
|
|
_ = @import("net.zig");
|
|
_ = @import("os/index.zig");
|
|
_ = @import("rand.zig");
|
|
_ = @import("sort.zig");
|
|
_ = @import("unicode.zig");
|
|
}
|