Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › crypto/ › benchmark.zig › benchmarkAead
benchmarkAead
benchmark.benchmarkAead
pub fn benchmarkAead (comptime Aead : anytype , comptime bytes : comptime_int , io : Io ) !u64
File
Code
pub fn benchmarkAead (comptime Aead : anytype , comptime bytes : comptime_int , io : Io ) !u64 {
var in : [512 * KiB ]u8 = undefined ;
random .bytes (in [0 ..]);
var tag : [Aead .tag_length ]u8 = undefined ;
var key : [Aead .key_length ]u8 = undefined ;
random .bytes (key [0 ..]);
var nonce : [Aead .nonce_length ]u8 = undefined ;
random .bytes (nonce [0 ..]);
var offset : usize = 0 ;
const start = benchTime (io );
while (offset < bytes ) : (offset += in .len ) {
Aead .encrypt (in [0 ..], tag [0 ..], in [0 ..], &[_ ]u8 {}, nonce , key );
try Aead .decrypt (in [0 ..], in [0 ..], tag , &[_ ]u8 {}, nonce , key );
}
mem .doNotOptimizeAway (&in );
const end = benchTime (io );
const elapsed_s = @as (f64 , @floatFromInt (end - start )) / time .ns_per_s ;
const throughput = @as (u64 , @intFromFloat (2 * bytes / elapsed_s ));
return throughput ;
}