my $var = shift; #出栈且赋值 与 my $var = $_[0]; 这种直接通过内存地址读取相比,时钟周期是否会增加? 3P用户 发表于 2011-06-21 16:27
是滴,绝大多数情形下没有必要区分。 如果是在单进程模式下,循环处理2000个IO句柄,这类操作累加起 ... 3P用户 发表于 2011-06-21 16:36
精神可嘉啊,直接算时钟周期。我最开始也只是算 bytecode zhlong8 发表于 2011-06-21 16:36
shift是会慢一点。 兰花仙子 发表于 2011-06-21 16:38
回复 Monox 把 cmpthese 改成 timethese 的结果:注意最后说 90000000 还是不够喔,我就不继续上调这个次 ... Monox 发表于 2011-06-22 14:43
你根本没有传入参数比较个什么? shift 可以直接检测出来 @_ 为空。 zhlong8 发表于 2011-06-22 14:53
你这个测试很怪异,感觉不足信的样子。 flw 发表于 2011-06-22 15:35
只想比较 shift 和索引两种方法的速度,可是 shift 会改变数组一时想不出来好办法了 zhlong8 发表于 2011-06-22 15:43
但楼主问的是子程序取参数,所以起码得搞个 sub 糊弄糊弄吧。 flw 发表于 2011-06-22 15:52
最终比较的不还是 shift 和索引的差别。用函数包起来会夹杂大量的多余指令,差异会被摊薄 zhlong8 发表于 2011-06-22 16:03
好吧你们赢了 想起之前看精通正则表达式学了一堆优化技巧,结果 Perl 全都已经优化了,一点成就感 ... zhlong8 发表于 2011-06-22 16:14