ruby - 标准库中的要求会使程序变慢吗?
问题描述
当我问这个问题时,我特别想到了 ruby,但如果答案与语言无关,我也想知道。
我经常require
来自 ruby 标准库,即fileutils
,open3
和pathname
.
但是,如果我只需要在一两行中使用它们的功能,我会避免使用它们并选择(有时可读性较差)不需要require
.
但是,使用它们似乎不会损害我的脚本的性能,即使使用快速基准测试(使用time
),如果我使用不同的方法,事情似乎也会以相同的速度运行。但对我来说这似乎很奇怪,这没有什么区别,因为为什么要让它们被require
使用(而不是直接包括在内)?所以,具体问题:
- 从标准库导入是否会使脚本变慢?
- 如果是这样,它总是可以忽略不计,还是取决于包?
- 第三方包呢?它们的导入速度是否比标准库中的慢?
解决方案
导入库将花费非零时间,但时间量与库成正比。有些非常小,有些则大得多,但所有随 Ruby 提供的通常都可以快速加载。
除非您每秒运行脚本一千次,否则 a 的影响require
将是最小的。
通常最好require
尽早将所有操作排除在外,以消除任何依赖问题,尤其是对于 gems。没有什么比由于依赖关系损坏而崩溃的代码更糟糕的了,但只有当您执行不经常发生的特定操作时。
如果您要启动此过程数千次,请考虑使用Spring 之类的工具或您自己的分叉模型来避免启动损失。您可以fork
多次预配置流程,每一次都将几乎立即准备就绪。
推荐阅读
- python - Django 使用 FTP 处理大文件
- java - 如何显示我的数据库的评论部分
- python - 如何在另一个 python 脚本中执行 python discord bot 函数?
- angular - 修复 angular http 升级 ionic
- html - 让 div 中的元素忽略它的容器大小,并使容器可滚动
- angular9 - Syncfusion EJS-网格角
- macos-catalina - Mac 键盘 Option 键模拟
- cron - 每分钟的第n秒运行一次cron?
- sql - Postgres 从另一个表中填充 json 中的 id
- python - 无法读取 UDP 数据包