ささいなことですが。

Windowsアプリテスト自動化ライブラリFriendly開発者の日記です。

lambdicSql - パフォーマンス改善せねば④ SQLite -

プロファイラで見てわかりやすかったところを対応しました。
www.nuget.org

こっから先は難しいですね。
で、もう少しノイズを減らすためにDBをSQLサーバーからSQLiteに変えました。ファイルアクセスなんで余計なブレはすくないでしょう。ちなみに計測はSurfacePro4のCorei5でやってます。
SQLiteはDBアプリとか必要なくて、Nugetから落としてくるだけで使えます。
f:id:ishikawa-tatsuya:20160713233349p:plain
あれ?EF入るの?
EFないバージョンと分けてくれればいいのに。

SQLiteは方言対応とかあるのですが、まあ、今回の計測程度は使えます。で、計測。SQLは一件だけ取得するものです。

SELECT
        IntVal,
        FloatVal,
        DoubleVal,
        DecimalVal,
        StringVal
FROM
        TableValues
WHERE
        ((TableValues.IntVal) = (@p_0));
(msec) Lambdic Dapper
1 0.5243 0.2986
2 0.1682 0.0964
3 0.137 0.0824
4 0.1407 0.0779
5 0.1341 0.0734
6 0.1226 0.0746
7 0.1234 0.0717
.. .. ..
.. .. ..
500 0.1001 0.0648
平均 0.13300521 0.075227455 ←差 0.057777756

速えー!
500回の平均で57µまで詰めました!
(でも、Dapperの1.76倍かかっているのか・・・)
このケースでは実使用上は問題ないレベルなんじゃないかなー。
まあ、ボトルネックはクエリ作成だから、もう少し色んなパターンで計測しないとダメでしょうけど。

ていうか、SQLite対応先にやろう。