新手问题 为什么很多 ruby gem 都使用 autoload 而非 require?

wppurking · 2013年07月05日 · 最后由 wppurking 回复于 2013年07月05日 · 6823 次阅读

Matz 说 autoload will be dead.

但是我看到现在很多开源项目都还在使用 autoload , 例如:

rack.rb

activerecord.rb

等等....

Matz 说 autoload 不推荐使用了,大家还在这么欢乐的使用 autoload 这是为什么呢?

楼主的机会来了... 快去发 PR...

#1 楼 @blacktulip 不懂,你这是说正话还是说反话

#2 楼 @Peter 不是反话... 我不懂,但是懂的人就可以去发 PR...

#1 楼 @blacktulip 外国银 帮我们查查资料哈 这个问题我也想问... GEM 里都是 autoload 为啥呢 还一写一大篇

老版本 ruby 的 require 有点慢,文件搞得多就会慢,用 autoload 就可以减少 require 调用的次数 (完全没用到的部分就不 require)

现在已经没必要了...

#5 楼 @luikore 大神,那个,require 和 autoload 是能直接替换掉的关系么?

#4 楼 @zj0713001 ... 略搜了一下啥也搜不到

老版本 ruby 的 require 有点慢, 文件搞得多就会慢, 用 autoload 就可以减少 require 调用的次数 (完全没用到的部分就不 require) 话说也许这就是原因?还有不少系统跑在老的 ruby 上?需要向后兼容什么的?

看一下是说多线程会有问题,如果没有多线程就无所谓了吧?

和 matz 推荐用$SAFE 但是没人屌他是一个道理...

autoload 主要就是个懒加载功能呗,其实 Rails 中懒加载到处都有,autoload 只是其中的一种方法而已,不用不代表就不使用懒加载了。 我觉得 Matz 可能只是觉得 autoload 不适合小型 Ruby 脚本,肯定速度慢,又不适合在并行情况下执行,就不推荐了吧。

Thanks all

了解了,因为在网络上搜索不到太多近期关于 autoload 的内容,但又看到很多开源项目中一直在用这个东西,所以就产生疑惑了。

无论是小项目推荐不是用 autoload 还是还是大项目使用 autoload 猜测文件懒加载的性能问题应该是那时候使用 autoload 的主要原因,现在发展到 ruby 2.0 , require 性能也已经提升了, 而 autoload 最后反正也是调用 Kernel::require 所以修改与不修改,现在这阶段还真不是问题了。

@blacktulip 其实我真感觉除了一些特殊情况下一定需要 autoload 的懒加载,其他情况使用 require 代替 autoload 也没问题了呀

需要 登录 后方可回复, 如果你还没有账号请 注册新账号