Geiger10その4

さらに高速化。

描画データ抽出の時に、Int32.Parseしてるのを、DB取得時に別プロパティにキーを作成することにして、

さらに測定データと近似曲線で2回ループしていたのを1回のループの中で処理するようにした。

DB取得は、

1.6250864秒→1.6746292秒

誤差範囲だろう。OK。

描画は、

件数 秒(前回) 秒(Parse変更) 秒(ループ変更)
100 0.9948753 0.3750184 0.2500125
300 2.7342723 0.8594151 0.5312736
800 7.1038532 2.1251057 1.2890904
1000 2.8211885 1.5837518
10000 25.8855324 15.1330634

おお、速くなった。!∑(゜∀゜)

Parseはコストかかるんだな。

そして、近似曲線のデータはKeyValuePairのListをLinqで抽出していたけど、KeyValuePairの検索は遅いらしいので、Dictionaryに変更してインデックスで拾うようにした。

結果、

件数 秒(前回) 秒(Parse変更) 秒(ループ変更) 秒(Dictionary変更)
100 0.9948753 0.3750184 0.2500125 0.2281533
300 2.7342723 0.8594151 0.5312736 0.4460666
800 7.1038532 2.1251057 1.2890904 1.1020225
1000 2.8211885 1.5837518 1.3493554
10000 25.8855324 15.1330634 12.9416594

大量データだと結構違ってくるもんだな。

前回よりだいぶ、速くなった。

Parallelも効いてるんだろうな、いちおう4コアだし。

WS000160

もうこれ以上速くならないかなぁ・・・

WS000161

まぁ、ボチボチやろう・・・

%d人のブロガーが「いいね」をつけました。