0
1

Promise.allの性能向上とPromiseバッチ処理のためのライブラリ

Last updated at Posted at 2023-10-28

こんにちは、
Promise.allは配列で一番長いプロミスがチャンクの実行時間になります。
このため、最も長いプロミスが完了するまで次のプロミスが何もしないという非効率的な問題が発生します。
私はこの問題を効果的に解決するために"Arehs"を作りました。

🤔 WHY AREHS?
Arehsはイベント中心のchunk processingを目指す最高の大規模バッチ処理を保証します。
これは、最初の非同期タスクの呼び出しが完了するのを待つことなく、次の非同期タスクの呼び出しを即座に割り当てることで、密にプロセスを実行します。

これにより、次のような多くのことを達成することができます:
プロミスの同時性を設定することで、サービスのスループットを制御することができます。
プロミスの同時性を設定することで、下流サービスの負荷を管理します。
アプリケーションのパフォーマンス向上
CPUアイドル時間の削減など

Promise.all
ご覧のように、Promise.allはバッチ内で最も遅いプロミスと同じ時間だけ実行されます。
つまり、メインスレッドは基本的に "何もせず"、最も遅いリクエストが終了するのを待っているのです。
Promise配列の中で一番長いプロミス、4番がチャンクの実行時間になります。
これは、最長のプロミスが終了するまで次のプロミスが何もしないという非効率な問題を引き起こします。
image.png

Arehs
Arehsはプロミスプルパターンを実行してNode.jsのメインスレッドを最大限に活用することが重要です。
利用率を高めるためには、APIコール(または他の非同期タスク)を密集して、最も長いコールが完了する間、待機しないようにする必要があります。
待たずに最初の呼び出しが完了するとすぐに次の呼び出しをスケジュールします。
image.png

このプロジェクトに興味がある方は、日本語翻訳のためのドキュメントや新機能や問題解決のためにPull Requestすることができます。

詳細は下記のリンクを確認してください。
ありがとうございます。🙏

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1