ADO.NETとEntity Frameworkでパフォーマンスを比較してみた
概要
ADO.NET(接続型)やADO.NET(非接続型)よりEntity Framework(以下、EF)はパフォーマンスに劣るとのことですが、最新のEFでは6倍ほどパフォーマンスを向上させたらしいので実際のところ、どの程度なのか試してみました。
環境
Visual Studio Community 2013
Entity Framework 6.1.2
測定
100万件程度のテーブルを全件SELECTしました。
ADO.NET(接続型) 処理件数:1346273 / 所要時間:00:00:02.5688781 ADO.NET(非接続型) 処理件数:1346273 / 所要時間:00:00:05.4641891 Entity Framework接続(コードファースト) 処理件数:1346273 / 所要時間:00:00:16.5212599
数回試して、ざっくり平均すると以下の結果となりました。
ADO.NET(接続型) | ADO.NET(非接続型) | Entity Framework |
---|---|---|
3秒 | 5秒 | 16秒 |
パフォーマンスを向上させるテクニックはいろいろあると思いますし、比較方法としては一面的な検証に過ぎませんが、このようなケースではこんな感じでしたということで。
速度を求められる場合は複雑さと引き換えに、低レベルAPIのADO.NETで完全に制御し、通常はEFによりコード量を抑え、保守性、生産性を向上させるという使い分けでよさそうです。
今後のバージョンアップでADO.NETとEFの差がさらに縮まることに期待します。