ruby – 为什么proc的运行速度比块更快?

前端之家收集整理的这篇文章主要介绍了ruby – 为什么proc的运行速度比块更快?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
This answer另一个问题说
array.map(&:to_s)

比快

array.map { |n| n.to_s }

在第一个例子中,&转到:第二个例子使用一个块.

为什么Proc比该基准测试块更快?有一些优化,这种技术允许口译员做吗?

解决方法

正如其他人所说,这是特别关于Symbol#to_proc而不是一般的procs,它几乎肯定是ruby实现依赖.在Symbol#to_proc本身就是ruby之前,纯粹的ruby实现方式相当于缓慢.

对于一个真正的答案,你想要在执行这样一个基准时配置ruby.

我读Ruby的源代码是当你调用Symbol#to_proc时,你得到的proc有点特殊:proc的正文只是一个C api调用(rb_funcall_passing_block),而在其他情况下它是实际的ruby代码,它需要执行一点时间

猜你在找的Ruby相关文章