@m = (7, 8, 9); %m = ( a => "123", b => "456", c => "789" ); print($m{"a"} + $m["b"]); 得出来的结果是 130. 但不知道怎么得来的?? 这里不是打印 $m{"a"}的值么?就是124才对啊.
my %hash = ( 'hi' => ('hello' => 'all'), 'bye' => ('later' => 'gone') ) print $hash{'hi'}; 为什么结果是hello, 而不是显示整个子hash: helloall 呢?
hash Functions A comprehensive collection of hash functions, a hash visualiser and some test results [see Mckenzie et al. Selecting a hashing Algorithm, SP&E 20(2):209-224, Feb 1990] will be available someday. If you just want to have a good hash function, and cannot wait, djb2 is one of the best string hash functions i know. it has excellent distribution and speed on many different sets of keys ...
2.1 PHP中出现的字符串hash函数 static unsigned long hashpjw(char *arKey, unsigned int nKeyLength) { unsigned long h = 0, g; char *arEnd=arKey+nKeyLength; while (arKey < arEnd) { h = (h << 4) + *arKey++; if ((g = (h & 0xF0000000))) { h = h ^ (g >> 24); h = h ^ g; } } return h; } 里面 又是 << 又是 >> ^ 要怎么才能理解? 要是自己写个hash算法 , 怎么考虑要用 << >> ^ ??
my %hash=("a"=>1,"b"=>2,"c"=>3); my $count=%hash; print $count."\n"; 总是显示0, 用@array=%hash 数组里也没东西。 这样对hash赋值有问题吗?
代码如下: sub func() { my %hash = ( aaa => 111, bbb => 222, ccc => 333 ); return \%hash; } my $ref_hash = func(); foreach ( my ($key,$value) = each %{$ref_hash} ) { print $key," => ",$value,"\n"; } 结果是: bbb => 222 bbb => 222 我预想的结果应该是: aaa => 111 bbb => 222 ccc => 333 [ 本帖最后由 qfmeal 于 2009-5-21 17:36 编辑 ]
问个 hash 上存 array 问题! my %hash; $hash{1}=["baidu","google" ]; 然后 scalar(@hash{1}) 和 foeeach( @hash{1} ) 都得不到我想要的 ?! 反正 感觉 hash 上 array 混乱的很!! [ 本帖最后由 liukaiyi 于 2009-2-19 09:57 编辑 ]
最近做了个Tokyo Cabinet的性能测试,使用hash时,写的速度奇慢,100w条记录需要30s才能写完,就算在mfs上也要10几秒,而在配置类似的CentOS上写入速度只需要0.7s,再做berkeleydb的测试,100w写甚至需要70s,而两个数据库在读的时候速度差不多,在FB上读100w用0.9s左右,TC在CentOS上只用0.5s,使用BTREE,TC和DB4的读写速度都是1s多一点。 为什么在hash的速度会这么慢呢?是内核设置问题还是文件系统的问题?