How to test? - minseok127/HashSimulator GitHub Wiki

Test

HashSimulator์˜ Test ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ test๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Test๋Š” ํฌ๊ฒŒ ๋‹ค์„ฏ ๋‹จ๊ณ„๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

Hashing Start

๋ชจ๋“  key๋“ค์— ๋Œ€ํ•ด Hash Function์„ ์ˆ˜ํ–‰ํ•˜๊ณ  Hash code๋ฅผ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.

์ดํ›„ ์ฃผ์–ด์ง„ Indexing ๋ฐฉ์‹์— ๋”ฐ๋ผ bin์— ๋“ค์–ด๊ฐ„ data์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •๋“ค์ด ์ˆ˜ํ–‰๋˜๋Š” ์‹œ๊ฐ„์„ ์ธก์ •ํ•˜์—ฌ nanosecond ๋‹จ์œ„๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

Chi-squared test

bins์— ๋“ค์–ด๊ฐ„ data์˜ ์ˆ˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Chi-squared test๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Chi-squared value์™€ Degree of freedom์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

Avalanche test

key๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ชจ๋“  bit๋“ค์— ๋Œ€ํ•ด์„œ ๊ฐ๊ฐ ํ•œ ๋ฒˆ์”ฉ ๋ฐ˜์ „์‹œ์ผœ ์›๋ž˜์˜ key์™€ bit 1๊ฐœ๋งŒ ๋‹ค๋ฅด๋„๋ก ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ดํ›„ ๋ณ€ํ˜•๋œ key์— ๋Œ€ํ•ด์„œ Hash Function์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์›๋ž˜์˜ key๋กœ๋ถ€ํ„ฐ ๋‚˜์˜จ Hash code์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์–ด์ง„ ๋ชจ๋“  key์— ๋Œ€ํ•ด์„œ ๋น„๊ต๋ฅผ ๋งˆ์นœ ํ›„ Hash code์˜ bit๋“ค ๊ฐ๊ฐ์— ๋Œ€ํ•ด Flip๋  ํ™•๋ฅ ์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

FillFactor test

FillFactor๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์–ผ๋งˆ๋‚˜ bin๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ง€ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

Hashing Finish

๊ฐ bin๋“ค์— ๋ช‡ ๊ฐœ์˜ Data๊ฐ€ ๋“ค์–ด๊ฐ”๋Š” ์ง€ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์ดํ›„ bin๋“ค๊ณผ output๋“ค์„ ์ดˆ๊ธฐํ™”์‹œ์ผœ์„œ ๋‹ค๋ฅธ Hash Function์ด Test๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.