关于使用map的疑问 - 读简简单单讲sort
时间:2010-08-15
来源:互联网
看了仙子的简简单单讲sort,有些想法
我记得map的效率是比较低的,再次测试一下,在debian, perl 5.10.1下,大约map要慢4到5倍
复制代码
虽然map写出来的代码很漂亮,但是这么大的性能差距,为什么不足以使得这些转换使用foreach呢
我记得map的效率是比较低的,再次测试一下,在debian, perl 5.10.1下,大约map要慢4到5倍
- for (0..20000000) {
- $_;
- }
-
- map {$_++} 0..20000000;
作者: ztkx 发布时间: 2010-08-15
本帖最后由 黑色阳光_cu 于 2010-08-15 01:28 编辑
“为什么不足以使得这些转换使用foreach呢”
什么意思?
map慢的原因,无非就是map一个大列表的时候,真的去产生那个大列表。在列表不很大的情况下,map和foreach没多大的差距。
“为什么不足以使得这些转换使用foreach呢”
什么意思?
map慢的原因,无非就是map一个大列表的时候,真的去产生那个大列表。在列表不很大的情况下,map和foreach没多大的差距。
作者: 黑色阳光_cu 发布时间: 2010-08-15
本帖最后由 ztkx 于 2010-08-15 02:05 编辑
回复 黑色阳光_cu
一次map一個大列表,和多次map一個小列表, 到底哪一個更費力呢?
我知道這個問題一定會有人問的,所以我特地測試了一下,
复制代码
和
复制代码
的區別
結果是,後者更慢,原因不難清楚,
回复 黑色阳光_cu
一次map一個大列表,和多次map一個小列表, 到底哪一個更費力呢?
我知道這個問題一定會有人問的,所以我特地測試了一下,
- map {$_++}, 0..200
- foreach(0..100) { map { $_++ }, 0..2 }
結果是,後者更慢,原因不難清楚,
作者: ztkx 发布时间: 2010-08-15
其实这里看到的 map 慢的一个重要原因是,for (0..20000000) 是不会创建如此大一个 list 的,但是 map 却会,于是,map 慢了一大截!
如果测试对比 这种 ( 0..200 ) 这种小list,却又没多大可比性,所以,应该说,大的 list ,for有专门的优化,推荐优先使用!
至于你后面的测试例子,很好理解嘛,前者一个函数调用,后者,多次函数调用,函数调用也是要有栈的更新啊,如此频繁的调用,能不慢嘛……
如果测试对比 这种 ( 0..200 ) 这种小list,却又没多大可比性,所以,应该说,大的 list ,for有专门的优化,推荐优先使用!
至于你后面的测试例子,很好理解嘛,前者一个函数调用,后者,多次函数调用,函数调用也是要有栈的更新啊,如此频繁的调用,能不慢嘛……
作者: dugu072_cu 发布时间: 2010-08-15
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28