我想生成一个输出文本文件,输入来自数据库。数据库很大,在创建输出文本文件的每个部分时需要检查很多条件。所以,它有点耗时的过程。
多线程是否有助于提高 rails 应用程序的性能?
我想生成一个输出文本文件,输入来自数据库。数据库很大,在创建输出文本文件的每个部分时需要检查很多条件。所以,它有点耗时的过程。
多线程是否有助于提高 rails 应用程序的性能?
多线程可能有助于提高 rails 应用程序的性能,但这在一定程度上取决于您运行的 Ruby 版本。使用 MRI Ruby,您只会在执行大量 I/O 操作(从数据库读取、将某些内容写入磁盘……)时获得改进。由于全局解释器锁,条件检查不会并行运行。
但是,当您使用 Rubinius 2 或 JRuby 时,您将获得没有全局解释器锁的 ruby 解释器,因此能够使用线程并行执行条件检查。
最后,它还将取决于您的实现和要求(是否甚至可以并行进行所有检查或是否存在依赖关系等)
我会回应说多线程可能会有所帮助。最简单的判断方法是在程序运行时运行“top”。如果一个 cpu 核心固定为 100% 而另一个处于空闲状态,您可能会受益于多线程或多进程。这是一个明显的例子——如果不是很清楚,你必须进一步挖掘并找出瓶颈。