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

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

Matz 说 autoload will be dead.

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

rack.rb

activerecord.rb

等等....

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

共收到 12 条回复

楼主的机会来了... 快去发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 也没问题了呀

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