ポーカー ハンドの履歴を解析し、そのデータを postgres データベースに保存しています。以下にその概要を示します。
パフォーマンスが比較的悪く、ファイルの解析には数時間かかります。データベース部分が全プログラム時間の 97% を占めていることがわかります。そのため、少し最適化するだけで、これが大幅に高速化されます。
私が今設定している方法は次のとおりです。
- 次のファイルを文字列に読み込みます。
- 1 つのゲームを解析し、オブジェクト GameData に格納します。
- すべてのプレイヤーについて、std::map に彼の名前があるかどうかを確認します。もしそうなら; playerid を配列に保存して 5 に進みます。
- プレーヤーを挿入し、それを std::map に追加し、プレーヤー ID を配列に格納します。
- playerids 配列を使用して、このベッティング ラウンドの動きを挿入し、moveid を配列に格納します。
- moveids 配列を使用して、movesequence を挿入し、movesequenceids を配列に格納します。
- これが最後のラウンドでない場合は、5 に進みます。
- movesequenceids 配列を使用して、ゲームを挿入します。
- これが最終ゲームでない場合は、2 に進みます。
- これが最後のファイルでない場合は、1 に進みます。
すべての動き、すべての動きのシーケンス、すべてのゲームに対してクエリを送信しているため、明らかにクエリが多すぎます。最高のパフォーマンスを得るには、それらをどのようにバンドルすればよいですか? 少しコードを書き直しても構わないので、遠慮しないでください。:)
前もって感謝します。
CX