読者です 読者をやめる 読者になる 読者になる

1.21 jigowatts

Great Scott!

ADO.NETとEntity Frameworkでパフォーマンスを比較してみた

C#

概要

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秒

パフォーマンスを向上させるテクニックはいろいろあると思いますし、比較方法としては一面的な検証に過ぎませんが、このようなケースではこんな感じでしたということで。

速度を求められる場合は複雑さと引き換えに、低レベルAPIADO.NETで完全に制御し、通常はEFによりコード量を抑え、保守性、生産性を向上させるという使い分けでよさそうです。

今後のバージョンアップでADO.NETとEFの差がさらに縮まることに期待します。