赞 | 2 |
VIP | 143 |
好人卡 | 1 |
积分 | 1 |
经验 | 216792 |
最后登录 | 2019-10-10 |
在线时间 | 24 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 帖子
- 1924
|
本帖最后由 紫苏 于 2010-9-24 07:29 编辑
嗯,是 C 写的
不知 unshift 你是怎么测的?九楼那样测一次能看出来的话,反而不正常了,可以这样测:- DATA = 10000
- a=[]
- DATA.times { |i| a << i }
- b=[1]
- t1=Time.now
- DATA.times { a.unshift(0) }
- p Time.now-t1
- t2=Time.now
- DATA.times { b.unshift(0) }
- p Time.now-t2
复制代码 一万以内都有明显的差别
-------------------
传递块那个其实是在搞函数式编程时养成习惯了 = = 实际上会影响效率的,因为 Ruby 块符合闭包的上下文绑定特性,这是个昂贵的过程。如果用默认传递的块(即不使用 & 保存到参数,使得块只能对当前方法的局部上下文起作用)的话会好一点
汗,打到这里才想起可以传递 Method 对象,因为没有绑定……但用起来自然是没有块惬意了 |
|