Az előző cikkemmel csak az volt a célom, hogy megmutassam, hogyan lehet megírni ugyanazt a lekérdezést kétféle módon, a teljesítményüket nem is vizsgátam, mivel érzésre egyik se volt túl lassú.
Laci kommentjében a teljesítmény kérdésre hívta fel a figyelmem, hát megnéztem, mi itt a helyzet. Nos, megúszta a LINQ, pedig nem akartam neki reklámot csinálni. Pontosan ugyanolyan teljesítményű lett a két megoldás, ami nem csoda, hisz pontosan ugyanaz az SQL végrehajtási tervet eredményezik! Egyetlen különbség, hogy a sorszámozást LINQ esetén csak procedurálisan tudtam megcsinálni, így a LINQ sql-es kódjában az nem szerepel, de ennek költsége nem is jelent meg a tiszta SQL megoldás végrehajtási tervében, annyira kicsi.
A lényeg tehát, hogy a LINQ nem feltétlenül lassú, sőt, teljesen egyenértékű lehet a hagyományos SQL-es megoldással. De miért is lenne más? Hisz egyszerűen arról van szó, hogy másképp írom le ugyanazt a specifikációt, az egész hatékonysága azon múlik, mennyire okos a LINQ to SQL sqlgenerátora. A jelek szerint egyszerűbb lekérdezésekre tökéletes.
Aki nem hiszi amit írok, nézze meg az alábbi képet (rákattintva nagyban).
Could you hire me? Contact me if you like what I’ve done in this article and think I can create value for your company with my skills.
LEAVE A COMMENT
5 COMMENTS
Nem magának az SQL futási teljesítményére gondoltam, elnézést ha félreérthető voltam… Én komplett webes alkalmazás felépítésénél teszteltem a linq-t a “hagyományos” tárolt eljárás, IDataReader stb. változattal szemben. Itt vesztett magasan a Linq. Az XLinq-val olyan tapasztalatom volt, hogy bizonyos node-szám után brutális lassulást mutatott a rajta végzett művelet.
+ tényleg csak a preview változattal teszteltem, azóta jelentősen javulhatott a helyzet.
Ez a sorozat sok mindent megmagyaráz:
http://blogs.msdn.com/ricom/archive/2007/06/22/dlinq-linq-to-sql-performance-part-1.aspx
Sokat húztak rajta út közben.
Én még tavaly tavasszal teszteltem, azóta nem követtem a változásokat. Ha jól emléxem, akkor a CompiledQuery még csak pletyka volt:-)
Pedig attól gyors :)