昨晩通常用の学習終了後に順位学習用CSV出力始めて寝て起きても終わらず断念しました。今日のレースに支障が出るからです。で、順位学習用CSV出力のコードを眺めてたんですが、何で時間掛かっているのか気になったんです。
for (int i = 0; i < tousu; i++) { RJSrc rJSrc = new RJSrc(...,Convert.ToByte(i+1),chakujun[i]); rj.Add(rJSrc); }
ループ内でクラス生成してリストに追加してましたが、このクラス基本的に最後の2項目のみ違うだけでそれ以外は共通なんです。ループ内でオブジェクトを繰り返して生成するのは時間が掛かります。そこでRJSrcをクラスではなく構造体に変更し
RJSrc rJSrc = new RJSrc(...,0,0); for (int i = 0; i < tousu; i++) { rJSrc.Umaban = Convert.ToByte(i+1); rJSrc.Juni = chakujun[i]; rj.Add(rJSrc); }
とする事で格段にスピードアップする事が出来ました。肝はclassは参照型で構造体は値型って事をCopilotに教えてもらいました😁
追記 2024.3.24 12:11
1990年~2023年の34年分出力して2時間12分で出力完了。前回5時間とか書いてたので半分以下に短縮されました。
0 件のコメント:
コメントを投稿