是否要求标准库使程序变慢?

问题描述 投票:1回答:2

当我提出这个问题时,我正在考虑ruby,但如果答案与语言无关,我也想知道。

我常常来自红宝石标准库require,即fileutilsopen3pathname

但是,如果我只需要在一两行中使用它们的功能,我就会避免使用它们,并选择不需要require的(有时不太可读)替代方案。

但是,使用它们似乎不会损害我的脚本的性能,即使使用快速基准测试(使用time),事情似乎也会以与使用不同方法时相同的速度运行。但这对我来说似乎很奇怪它没有任何区别,因为为什么然后让它们成为使用required(而不仅仅是包括在内)?那么,具体问题:

  1. 从标准库导入会使脚本变慢吗?
  2. 如果是这样,它总是可以忽略不计,还是取决于包裹?
  3. 那第三方包呢?它们的导入速度是否比标准库中的慢?
ruby import require standard-library
2个回答
2
投票

导入库将花费非零时间,但是时间量与库的大小成正比。有些非常小,有些要大得多,但所有随Ruby一起提供的产品通常都可以快速加载。

除非你每秒运行你的脚本一千次,否则require的影响将是最小的。

通常最好尽快将所有require操作排除在外,以消除任何依赖性问题,尤其是使用宝石。没有什么比因为依赖性破坏而导致崩溃的代码更糟糕,但只有在执行不经常发生的特定操作时才会发生。

如果您开始这个过程数千次,请考虑像Spring这样的工具或您自己的分叉模型,以避免启动惩罚。您可以多次对fork进行预先配置的过程,每个过程几乎可以立即就绪。


0
投票

使用require时,您告诉Ruby加载一些文件(您自己的文件,标准库或外部库)。

所以是的,找到并加载它需要时间。

但是所需的文件正在加载only once(通常在开始时因为文件顶部通常是require)。

加载给定的name,如果成功则返回true,如果已加载该功能则返回false

加载文件的绝对路径将添加到$LOADED_FEATURES$")。如果文件的路径已经出现在$"中,则不会再次加载该文件

花费的时间取决于文件大小和相关文件的大小。

© www.soinside.com 2019 - 2024. All rights reserved.