首页 > 解决方案 > 标准库中的要求会使程序变慢吗?

问题描述

当我问这个问题时,我特别想到了 ruby​​,但如果答案与语言无关,我也想知道。

我经常require来自 ruby​​ 标准库,即fileutils,open3pathname.

但是,如果我只需要在一两行中使用它们的功能,我会避免使用它们并选择(有时可读性较差)不需要require.

但是,使用它们似乎不会损害我的脚本的性能,即使使用快速基准测试(使用time),如果我使用不同的方法,事情似乎也会以相同的速度运行。但对我来说这似乎很奇怪,这没有什么区别,因为为什么要让它们被require使用(而不是直接包括在内)?所以,具体问题:

  1. 从标准库导入是否会使脚本变慢?
  2. 如果是这样,它总是可以忽略不计,还是取决于包?
  3. 第三方包呢?它们的导入速度是否比标准库中的慢?

标签: rubyimportrequirestandard-library

解决方案


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

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

通常最好require尽早将所有操作排除在外,以消除任何依赖问题,尤其是对于 gems。没有什么比由于依赖关系损坏而崩溃的代码更糟糕的了,但只有当您执行不经常发生的特定操作时。

如果您要启动此过程数千次,请考虑使用Spring 之类的工具或您自己的分叉模型来避免启动损失。您可以fork多次预配置流程,每一次都将几乎立即准备就绪。


推荐阅读