56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			V
		
	
	
| module main
 | |
| 
 | |
| import (
 | |
| 	hash.fnv1a
 | |
| 	hash.wyhash
 | |
| 	rand
 | |
| 	time
 | |
| )
 | |
| 
 | |
| fn main() {
 | |
| 	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 bytepile := []byte
 | |
| 	for _ in 0 .. sample_size * max_str_len {
 | |
| 		bytepile << byte(40 + rand.next(125 - 40))
 | |
| 	}
 | |
| 	mut str_lens := []int
 | |
| 	for _ in 0 .. sample_size {
 | |
| 		str_lens << min_str_len + rand.next(max_str_len - min_str_len)
 | |
| 	}
 | |
| 	println('Hashing each of the generated strings...')
 | |
| 	t0 := time.ticks()
 | |
| 	mut start_pos := 0
 | |
| 	for len in str_lens {
 | |
| 		end_pos := start_pos + len
 | |
| 		str := string(bytepile[start_pos..end_pos],len)
 | |
| 		_ = wyhash.wyhash_c(&str.str, u64(str.len), 1)
 | |
| 		start_pos = end_pos
 | |
| 	}
 | |
| 	t1 := time.ticks()
 | |
| 	d1 := t1 - t0
 | |
| 	println(' * wyhash4 C: ${d1}ms')
 | |
| 	start_pos = 0
 | |
| 	for len in str_lens {
 | |
| 		end_pos := start_pos + len
 | |
| 		str := string(bytepile[start_pos..end_pos],len)
 | |
| 		_ = wyhash.sum64_string(str, 1)
 | |
| 		start_pos = end_pos
 | |
| 	}
 | |
| 	t2 := time.ticks()
 | |
| 	d2 := t2 - t1
 | |
| 	println(' * wyhash4: ${d2}ms')
 | |
| 	start_pos = 0
 | |
| 	for len in str_lens {
 | |
| 		end_pos := start_pos + len
 | |
| 		str := string(bytepile[start_pos..end_pos],len)
 | |
| 		_ = fnv1a.sum64_string(str)
 | |
| 		start_pos = end_pos
 | |
| 	}
 | |
| 	t3 := time.ticks()
 | |
| 	d3 := t3 - t2
 | |
| 	println(' * fnv1a64: ${d3}ms')
 | |
| }
 |