测试文件hash.txt,是一个50万行的文本,每行有一个与行号相同的数字.下面两组测试,分别测试哈希表与数组在数据检索方面的效率.
$txt = [io.file]::ReadAllLines('hash.txt'); #哈希表测试 Measure-Command { $hash = @{}; foreach($line in $txt){ $hash.Add($line,$line); } foreach($line in $txt){ $hash.ContainsKey($line); } } #数组测试 Measure-Command { [System.Collections.ArrayList] $ary = @(); foreach($line in $txt){ $ary.Add($line); } foreach($line in $txt){ $ary.Contains($line); } }
测试结果:哈希表1.9秒完成.而数组10分钟还没出结果(两者相差太大,终止测试).
哈希表不能添加重复Key,这对于数据去重很方便,而且效率非常高.在需要查询大量数据的场合,可以考虑将数组转换为哈希表(索引为Key,数据为Value).
不过,这并不意味着哈希表能取代数组.
哈希表检索的时间复杂度几乎可以接近于1,确实高效。