diff options
| author | Indrajith K L | 2022-12-03 17:00:20 +0530 | 
|---|---|---|
| committer | Indrajith K L | 2022-12-03 17:00:20 +0530 | 
| commit | f5c4671bfbad96bf346bd7e9a21fc4317b4959df (patch) | |
| tree | 2764fc62da58f2ba8da7ed341643fc359873142f /v_windows/v/cmd/tools/bench | |
| download | cli-tools-windows-master.tar.gz cli-tools-windows-master.tar.bz2 cli-tools-windows-master.zip  | |
Diffstat (limited to 'v_windows/v/cmd/tools/bench')
| -rw-r--r-- | v_windows/v/cmd/tools/bench/wyhash.v | 56 | 
1 files changed, 56 insertions, 0 deletions
diff --git a/v_windows/v/cmd/tools/bench/wyhash.v b/v_windows/v/cmd/tools/bench/wyhash.v new file mode 100644 index 0000000..b760ad6 --- /dev/null +++ b/v_windows/v/cmd/tools/bench/wyhash.v @@ -0,0 +1,56 @@ +module main + +import hash.fnv1a +import hash as wyhash +import rand +import benchmark + +fn main() { +	rand.seed([u32(42), 0]) +	sample_size := 10000000 +	min_str_len := 20 +	max_str_len := 40 +	println('Generating $sample_size strings between $min_str_len - $max_str_len chars long...') +	mut checksum := u64(0) +	mut start_pos := 0 +	mut bgenerating := benchmark.start() +	mut bytepile := []byte{} +	for _ in 0 .. sample_size * max_str_len { +		bytepile << byte(rand.int_in_range(40, 125)) +	} +	mut str_lens := []int{} +	for _ in 0 .. sample_size { +		str_lens << rand.int_in_range(min_str_len, max_str_len) +	} +	bgenerating.measure('generating strings') +	println('Hashing each of the generated strings...') +	// +	mut bhashing_1 := benchmark.start() +	start_pos = 0 +	checksum = 0 +	for len in str_lens { +		end_pos := start_pos + len +		checksum ^= wyhash.wyhash_c(unsafe { &byte(bytepile.data) + start_pos }, u64(len), +			1) +		start_pos = end_pos +	} +	bhashing_1.measure('wyhash.wyhash_c  | checksum: ${checksum:22}') +	mut bhashing_2 := benchmark.start() +	start_pos = 0 +	checksum = 0 +	for len in str_lens { +		end_pos := start_pos + len +		checksum ^= wyhash.sum64(bytepile[start_pos..end_pos], 1) +		start_pos = end_pos +	} +	bhashing_2.measure('wyhash.sum64     | checksum: ${checksum:22}') +	mut bhashing_3 := benchmark.start() +	start_pos = 0 +	checksum = 0 +	for len in str_lens { +		end_pos := start_pos + len +		checksum ^= fnv1a.sum64(bytepile[start_pos..end_pos]) +		start_pos = end_pos +	} +	bhashing_3.measure('fnv1a.sum64      | checksum: ${checksum:22}') +}  | 
