Nat*_*ong 5 ruby ruby-on-rails ruby-on-rails-3
在启动具有大量依赖关系的Rails应用程序时,在require文件中花费了大量时间(我认为).
假设您要创建一个部署过程,将所有require语句转换为文件串联,使用相同的规则(不要两次获取相同的文件,等等).从本质上讲,它会以资产管道处理javascript的方式对待Ruby.
这会产生真正的速度差异吗?是否会产生任何问题 - 例如,使用可变范围 - 除了将错误跟踪到原始源文件更难?
总之,这是辉煌还是疯狂?
正如pst指出的那样,这在生产中毫无意义,服务器可能会加载一次,然后分叉处理新的请求.
但请考虑测试环境,每次运行测试时都会在其中启动Rails应用程序.预先连接所有宝石可能会产生类似于Spork宝石的效果.
我想我真正的问题是在require解析文件内容方面花了多少时间.
小智 2
太棒了;它不会对请求之间的摊销产生影响1 -任何微不足道的启动成本都是无关紧要的2。
1 “提高性能”的更好方法就是重用进程 - 例如,仅针对 N 个请求加载一次进程(这意味着仅“运行”语句require一次) - 正如已经完成的那样。
2对于那些真正对“它是否会解析得更快”感兴趣的人,请运行基准测试。然后意识到这并不重要——即使在启动时节省一秒钟对于网络服务器基础设施来说也不重要。(当然,如果有的话,它只会比一些额外的磁盘搜索快几毫秒。)