出力テキスト ファイルを生成したいのですが、入力はデータベースから取得されます。データベースは巨大で、出力テキスト ファイルのすべての部分を作成する際にチェックする必要がある条件がたくさんあります。そのため、少し時間がかかるプロセスです。
マルチスレッドは Rails アプリケーションのパフォーマンスの向上に役立ちますか?
出力テキスト ファイルを生成したいのですが、入力はデータベースから取得されます。データベースは巨大で、出力テキスト ファイルのすべての部分を作成する際にチェックする必要がある条件がたくさんあります。そのため、少し時間がかかるプロセスです。
マルチスレッドは Rails アプリケーションのパフォーマンスの向上に役立ちますか?
マルチスレッドは、railsアプリケーションのパフォーマンスを向上させるのに役立つ場合がありますが、実行しているRubyのバージョンによって少し異なります。MRI Rubyを使用すると、多くのI / O操作(データベースからの読み取り、ディスクへの書き込みなど)を実行する場合にのみ改善が得られます。グローバルインタプリタロックのため、条件チェックは並行して実行されません。
ただし、Rubinius 2またはJRubyを使用している場合は、グローバルインタープリターロックがないため、スレッドを使用して条件チェックを並行して実行できるRubyインタープリターを取得します。
最終的には、実装と要件にも依存します(すべてのチェックを並行して実行することも可能ですか、それとも依存関係があるかなど)。
マルチスレッドが役立つかもしれないことをエコーします。最も簡単な方法は、プログラムの実行中に「top」を実行することです。1つのCPUコアが100%でペグされ、もう1つがアイドル状態の場合、複数のスレッドまたは複数のプロセスのいずれかからメリットが得られる可能性があります。ただし、これは明らかなケースです。それほど明確でない場合は、さらに掘り下げてボトルネックを特定する必要があります。