///|
/// Benchmark: crc32 small data (32 bytes)
test "bench/crc32_32_bytes" (b : @bench.T) {
let data = Bytes::make(32, b'\x5A')
b.bench(fn() { b.keep(crc32(data).reinterpret_as_int()) })
}
///|
/// Benchmark: crc32 medium data (256 bytes)
test "bench/crc32_256_bytes" (b : @bench.T) {
let data = Bytes::make(256, b'\x5A')
b.bench(fn() { b.keep(crc32(data).reinterpret_as_int()) })
}
///|
/// Benchmark: crc32 large data (4KB)
test "bench/crc32_4kb" (b : @bench.T) {
let data = Bytes::make(4096, b'\x5A')
b.bench(fn() { b.keep(crc32(data).reinterpret_as_int()) })
}
///|
/// Benchmark: crc32_fast small data (32 bytes)
test "bench/crc32_fast_32_bytes" (b : @bench.T) {
let data = Bytes::make(32, b'\x5A')
b.bench(fn() { b.keep(crc32_fast(data).reinterpret_as_int()) })
}
///|
/// Benchmark: crc32_fast medium data (256 bytes)
test "bench/crc32_fast_256_bytes" (b : @bench.T) {
let data = Bytes::make(256, b'\x5A')
b.bench(fn() { b.keep(crc32_fast(data).reinterpret_as_int()) })
}
///|
/// Benchmark: crc32_fast large data (4KB)
test "bench/crc32_fast_4kb" (b : @bench.T) {
let data = Bytes::make(4096, b'\x5A')
b.bench(fn() { b.keep(crc32_fast(data).reinterpret_as_int()) })
}
///|
/// Benchmark: crc32_verify
test "bench/crc32_verify" (b : @bench.T) {
let data = Bytes::make(128, b'\xAB')
let expected = crc32(data)
b.bench(fn() { b.keep(crc32_verify(data, expected)) })
}
///|
/// Benchmark: BinaryWriter push operations
test "bench/binary_writer_push" (b : @bench.T) {
b.bench(fn() {
let w = BinaryWriter::new()
for i in 0..<100 {
w.push_u32(i.reinterpret_as_uint())
w.push_u64(i.to_int64().reinterpret_as_uint64())
w.push_f32(Float::from_double(i.to_double()))
}
b.keep(w.concat().length())
})
}
///|
/// Benchmark: BinaryWriter push_bytes
test "bench/binary_writer_push_bytes" (b : @bench.T) {
let chunk = Bytes::make(64, b'\xCC')
b.bench(fn() {
let w = BinaryWriter::new()
for _ in 0..<50 {
w.push_bytes(chunk)
}
b.keep(w.concat().length())
})
}
///|
/// Benchmark: BinaryReader sequential reads
test "bench/binary_reader_sequential" (b : @bench.T) {
let w = BinaryWriter::new()
for i in 0..<100 {
w.push_u32(i.reinterpret_as_uint())
w.push_u64(i.to_int64().reinterpret_as_uint64())
w.push_f32(Float::from_double(i.to_double()))
}
let data = w.concat()
b.bench(fn() {
let r = BinaryReader::new(data)
let mut sum = 0
for _ in 0..<100 {
sum = sum + r.read_u32().reinterpret_as_int()
sum = sum + r.read_u64().reinterpret_as_int64().to_int()
sum = sum + r.read_f32().to_double().to_int()
}
b.keep(sum)
})
}
///|
/// Benchmark: BinaryReader read_bytes
test "bench/binary_reader_read_bytes" (b : @bench.T) {
let w = BinaryWriter::new()
for _ in 0..<50 {
w.push_bytes(Bytes::make(64, b'\xDD'))
}
let data = w.concat()
b.bench(fn() {
let r = BinaryReader::new(data)
let mut total = 0
for _ in 0..<50 {
let chunk = r.read_bytes(64)
total = total + chunk.length()
}
b.keep(total)
})
}
///|
/// Benchmark: BinaryReader skip
test "bench/binary_reader_skip" (b : @bench.T) {
let data = Bytes::make(1000, b'\xEE')
b.bench(fn() {
let r = BinaryReader::new(data)
for _ in 0..<50 {
r.skip(20)
}
b.keep(r.remaining())
})
}