<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-5%3Asdal039</id>
	<title>SE250:lab-5:sdal039 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-5%3Asdal039"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-5:sdal039&amp;action=history"/>
	<updated>2026-04-29T01:15:37Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.kram.nz/index.php?title=SE250:lab-5:sdal039&amp;diff=6786&amp;oldid=prev</id>
		<title>Mark: 21 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-5:sdal039&amp;diff=6786&amp;oldid=prev"/>
		<updated>2008-11-03T05:19:54Z</updated>

		<summary type="html">&lt;p&gt;21 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Sample Size: 10,000&lt;br /&gt;
&lt;br /&gt;
Number of Keys: 100&lt;br /&gt;
&lt;br /&gt;
Table Size: 1000&lt;br /&gt;
&lt;br /&gt;
Sample size of 10,000 was chosen because it seemed to be the lowest order of magnitude that gave fairly similar results to any order of magnitude above, and different to orders of magnitude below. This would result in the fastest execution time for the level of accuracy we want.&lt;br /&gt;
&lt;br /&gt;
===Part 1===&lt;br /&gt;
&lt;br /&gt;
Low Entropy Source&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Function&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Entropy&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Chi sq&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Mean&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Monte Carlo&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Series Correlation&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Buzhash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.98550&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;99.00%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;125.825&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1.26%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.000047&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Buzhashn&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.98214&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;50.00%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;127.589&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.10%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.000600&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hash CRC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4.85247&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;99.261&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;26.10%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.285059&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Java Integer Hash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4.11606&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;32.385&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;27.32%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.217081&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Java &lt;br /&gt;
Object Hash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.00000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;77.000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;27.32%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.521556&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Java String Hash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.99347&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;99.99%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;127.343&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.19%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.017074&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Base 256&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.00000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;97.000&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;27.32%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;undefined&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Random&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.93533&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;112.054&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10.82%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.066125&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;High Random&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.98463&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;97.50%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128.035&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.04%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.011571&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Typical Entropy Source&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Function&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Entropy&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Chi sq&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Mean&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Monte Carlo&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;Series Correlation&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Buzhash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.97970&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;25.00%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;127.177&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1.95%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.007153&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Buzhashn&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.98214&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;50.00%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;127.589&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.10%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.000600&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hash CRC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.77880&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;123.087&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1.11%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.002250&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Java Integer Hash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4.11606&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;32.385&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;27.32%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.217081&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Java Object Hash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4.93157&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;116.582&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;25.87%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.506511&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Java String Hash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.89301&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;126.009&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1.42%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.021360&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Base 256&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3.90309&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;107.987&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;27.32%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.079032&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Random&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.93533&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.01%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;112.054&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;10.82%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;-0.066125&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;High Random&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;7.98463&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;97.50%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;128.035&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.04%&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;0.011571&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Best Hash Function&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
For low entropy source&lt;br /&gt;
&lt;br /&gt;
1. Java String Hash&lt;br /&gt;
&lt;br /&gt;
2. Buzhash&lt;br /&gt;
&lt;br /&gt;
3. High Random&lt;br /&gt;
&lt;br /&gt;
4. Buzhashn&lt;br /&gt;
&lt;br /&gt;
5. Random&lt;br /&gt;
&lt;br /&gt;
6. Hash CRC&lt;br /&gt;
&lt;br /&gt;
7. Base 256&lt;br /&gt;
&lt;br /&gt;
8. Java Object Hash&lt;br /&gt;
&lt;br /&gt;
9. Java Integer Hash&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For typical entropy source&lt;br /&gt;
&lt;br /&gt;
1. Buzhashn&lt;br /&gt;
&lt;br /&gt;
2. High Random&lt;br /&gt;
&lt;br /&gt;
3. Buzhash&lt;br /&gt;
&lt;br /&gt;
4. Random&lt;br /&gt;
&lt;br /&gt;
5. Java String Hash&lt;br /&gt;
&lt;br /&gt;
6. Hash CRC&lt;br /&gt;
&lt;br /&gt;
7. Java Object Hash&lt;br /&gt;
&lt;br /&gt;
8. Java Integer Hash&lt;br /&gt;
&lt;br /&gt;
9. Base 256&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Best in both cases: &amp;#039;&amp;#039;&amp;#039;buzhashn&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;buzhash&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
===Part 2===&lt;br /&gt;
&lt;br /&gt;
Low Entropy Source&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Function&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;llps&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;expected&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Buzhash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.13803&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hash CRC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.13803&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Base 256&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.13803&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Java String Hash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.13803&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Java Object Hash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;100&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.13803&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Typical Entropy Source&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;table&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;Function&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;llps&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;expected&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Buzhash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.13803&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Hash CRC&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.13803&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Base 256&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;4&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.13803&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Java String Hash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.13803&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;Java Object Hash&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;3&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;2.13803&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In actual use, buzhash produced a hash table with the lowest linked-list length.&lt;br /&gt;
For low entropy source base 256 and Java object hash both performed very badly, putting every cell into the same place in the array. While better in the typical entropy source, they still performed the worst out of the hash functions.&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>