<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>LINQ</title>
        <link>http://agilior.pt/blogs/pedro.rainho/category/43.aspx</link>
        <description>LINQ</description>
        <language>pt-PT</language>
        <copyright>Pedro Rainho</copyright>
        <managingEditor>pedro.rainho@agilior.pt</managingEditor>
        <generator>Subtext Version 1.9.0.27</generator>
        <item>
            <title>WAR between Entity Framework Vs LINQ to SQL</title>
            <link>http://agilior.pt/blogs/pedro.rainho/archive/2008/12/04/6223.aspx</link>
            <description>&lt;p&gt;Since the day that ADO.Net team proudly announced &lt;a href="http://blogs.msdn.com/adonet/archive/2008/10/29/update-on-linq-to-sql-and-linq-to-entities-roadmap.aspx"&gt;"We’re making significant investments in the Entity Framework such that as of .NET 4.0 the Entity Framework will be our recommended data access solution for LINQ to relational scenarios.  We are listening to customers regarding LINQ to SQL and will continue to evolve the product based on feedback we receive from the community as well.".&lt;/a&gt;, In other words LINQ to SQL will be terminated, that we are facing a WAR between these two technologies.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;My opinion one of then, LINQ to SQL or Entity Framework, should not been released ever. Only one should be released or a mix of them, not both.&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Since the WAR was not prevented, and we (developers) are in battle field (choosing between technologies), we will see who is going win, and my vote goes to LINQ to SQL.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Since that day that I read:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It’s not LINQ to SQL that should be terminated it’s  Entity Framework. &lt;/li&gt;    &lt;li&gt;Both should terminated and should appear a mix between both having the pros between both and solving the cons. &lt;/li&gt;    &lt;li&gt;Finally others are suggesting that LINQ to SQL should be open source and should be maintain by the community.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Who will win this battle??? &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;A question that I love to see the answer before the release of .Net4.0…&lt;/p&gt;&lt;img src="http://agilior.pt/blogs/pedro.rainho/aggbug/6223.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pedro Rainho</dc:creator>
            <guid>http://agilior.pt/blogs/pedro.rainho/archive/2008/12/04/6223.aspx</guid>
            <pubDate>Thu, 04 Dec 2008 11:50:13 GMT</pubDate>
            <wfw:comment>http://agilior.pt/blogs/pedro.rainho/comments/6223.aspx</wfw:comment>
            <comments>http://agilior.pt/blogs/pedro.rainho/archive/2008/12/04/6223.aspx#feedback</comments>
            <wfw:commentRss>http://agilior.pt/blogs/pedro.rainho/comments/commentRss/6223.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Very worrying article&amp;hellip;Is LINQ to SQL Truly Dead</title>
            <link>http://agilior.pt/blogs/pedro.rainho/archive/2008/11/03/5848.aspx</link>
            <description>&lt;p&gt;Recently I had received an email from a friend about LINQ to SQL. The name of the article is :&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.infoq.com/news/2008/11/DLINQ-Future"&gt;Is LINQ to SQL Truly Dead?&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;And it makes me think, if MS releases a technology such as LINQ to SQL a few months ago and now they start thinking in deprecate that technology just because they have Entity Framework and LINQ to ENTITIES… I’m wondering in what could happen with technologies such as WCF or WF.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;My question to them is WHAT ARE YOU THINKING?????? If the technology is released and then is deprecated why did you release it?????&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In the end of the article there is a line that says:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;“So there you have it; over the long run LINQ to SQL and LINQ to Entities will merge. In the mean time, development work on LINQ to SQL will not end entirely.”&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;I hope they never merge… &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;One other thing companies invest TIME, MONEY, STUDDING MS technologies and then those technologies are used to develop products, think about it…&lt;/p&gt;&lt;img src="http://agilior.pt/blogs/pedro.rainho/aggbug/5848.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pedro Rainho</dc:creator>
            <guid>http://agilior.pt/blogs/pedro.rainho/archive/2008/11/03/5848.aspx</guid>
            <pubDate>Mon, 03 Nov 2008 06:58:32 GMT</pubDate>
            <wfw:comment>http://agilior.pt/blogs/pedro.rainho/comments/5848.aspx</wfw:comment>
            <comments>http://agilior.pt/blogs/pedro.rainho/archive/2008/11/03/5848.aspx#feedback</comments>
            <wfw:commentRss>http://agilior.pt/blogs/pedro.rainho/comments/commentRss/5848.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ADO.net Vs Linq to SQL - Conclusion</title>
            <link>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/11/5007.aspx</link>
            <description>&lt;p&gt;A few days ago I posted some tests comparing ADO.Net and Linq to SQL. As expected Linq to SQL is worst that ADO.Net, but as could be seen in some tests the values were very approximated.&lt;/p&gt;  &lt;p&gt;In one of the post I had received a comment saying that I should do this:&lt;/p&gt;  &lt;p&gt;IEnumerable&amp;lt;PerformanceTestTable&amp;gt; resultQuery = (from p in db.PerformanceTestTables   &lt;br /&gt;select p).ToList();&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;instead of this:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;IQueryable&amp;lt;PerformanceTestTable&amp;gt; resultQuery = from p in db.PerformanceTestTables   &lt;br /&gt;select p;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;and that "Using ToList (or any of the four extensions which call GetEnumerator), will force LINQ to get all the records at once. You should see a performance gain after adding ToList()."&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;I had done the tests and most are best using ToList(). This was the results:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Direct Single Select&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;previous test results&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="250" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_thumb_1.png" width="624" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="402" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;469,8076&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;466&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;2747,09&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;2710&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ToList() test results&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="249" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_thumb.png" width="622" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="402" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;469,8076&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;466&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;2759,952&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;2719&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Direct Select All&lt;/strong&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;previous test results&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="245" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_thumb_2.png" width="612" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="402" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;2788,928&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;2733&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;5476,776&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;5494&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ToList() test results&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_8.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="240" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_thumb_3.png" width="600" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="402" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;2788,928&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;2733&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;5250,138&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;5112&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Direct Select All&lt;/strong&gt;  &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;previous test results&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_10.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="245" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_thumb_4.png" width="613" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="402" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;964660,4&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;960886&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;1719343&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;1716473&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ToList() test results&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_12.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="251" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLConclusion_1064B/image_thumb_5.png" width="628" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="402" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;         &lt;p&gt;964660,4&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;960886&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;1710777&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="100"&gt;         &lt;p&gt;1713680&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Another test that I had done lately in order to understand why I get such different results using Linq to SQL I was able to see that the object DataContext takes lot's of ticks just to be initialized.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="162" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="85"&gt;         &lt;p&gt;AVERAGE&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;p&gt;MEDIAN&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="90"&gt;         &lt;p&gt;147,1824&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="75"&gt;         &lt;p&gt;137&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;One other conclusion that I had take from these tests was that if I want to get similar result, between ADO.Net and Linq to SQL, I had to use Store Procedures.&lt;/p&gt;&lt;img src="http://agilior.pt/blogs/pedro.rainho/aggbug/5007.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pedro Rainho</dc:creator>
            <guid>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/11/5007.aspx</guid>
            <pubDate>Fri, 11 Jul 2008 15:36:47 GMT</pubDate>
            <wfw:comment>http://agilior.pt/blogs/pedro.rainho/comments/5007.aspx</wfw:comment>
            <comments>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/11/5007.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://agilior.pt/blogs/pedro.rainho/comments/commentRss/5007.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ADO.net Vs Linq to SQL - Part 5</title>
            <link>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4938.aspx</link>
            <description>&lt;p&gt;The second category that I tested was the batch execution.&lt;/p&gt;
&lt;p&gt;The tests I had done for batch execution were:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Insert Batch&lt;/li&gt;
    &lt;li&gt;Update Batch&lt;/li&gt;
    &lt;li&gt;Delete Batch&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Insert Batch&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the insert batch test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectBatchInsert(&lt;span style="color: blue;"&gt;int &lt;/span&gt;numberTimes)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;date = &lt;span style="color: rgb(43, 145, 175);"&gt;DateTime&lt;/span&gt;.Now.ToString(&lt;span style="color: rgb(163, 21, 21);"&gt;"yyyy-MM-dd HH:mm:ss"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;for &lt;/span&gt;(&lt;span style="color: blue;"&gt;int &lt;/span&gt;i = 0; i &amp;lt; numberTimes; ++i)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"INSERT into PerformanceTestTable (StringColumn, DateColumn)values('xxx', '" &lt;/span&gt;+ date + &lt;span style="color: rgb(163, 21, 21);"&gt;"');"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;&lt;br /&gt;        sqlConnection.Open();&lt;br /&gt;        sqlCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;        sqlCommand.Connection.Close();&lt;br /&gt;        sqlCommand.Dispose();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectBatchInsert(&lt;span style="color: blue;"&gt;int &lt;/span&gt;numberTimes)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;DateTime &lt;/span&gt;date = &lt;span style="color: rgb(43, 145, 175);"&gt;DateTime&lt;/span&gt;.Now;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue;"&gt;for &lt;/span&gt;(&lt;span style="color: blue;"&gt;int &lt;/span&gt;i = 0; i &amp;lt; numberTimes; ++i)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;();&lt;br /&gt;            perf.StringColumn = &lt;span style="color: rgb(163, 21, 21);"&gt;"xxx"&lt;/span&gt;;&lt;br /&gt;            perf.DateColumn = date;&lt;br /&gt;&lt;br /&gt;            db.PerformanceTestTables.InsertOnSubmit(perf);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        db.SubmitChanges();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart5_CBC3/image_2.png"&gt;&lt;img height="225" border="0" width="562" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart5_CBC3/image_thumb.png" alt="image" style="border: 0px none ;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1113000&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1052950&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1172881&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1170409&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Update Batch&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the update batch test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectBatchUpdate()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command1 = &lt;span style="color: rgb(163, 21, 21);"&gt;"SELECT IntColumn , StringColumn, DateColumn from PerformanceTestTable "&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand1 = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command1, sqlConnection);&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlDataReader &lt;/span&gt;sqlDataReader = sqlCommand1.ExecuteReader();&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt; ListPerformance = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;while &lt;/span&gt;(sqlDataReader.Read())&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;();&lt;br /&gt;        perf.IntColumn = sqlDataReader.GetInt32(0);&lt;br /&gt;        perf.StringColumn = sqlDataReader.GetString(1);&lt;br /&gt;        perf.DateColumn = sqlDataReader.GetDateTime(2);&lt;br /&gt;&lt;br /&gt;        ListPerformance.Add(perf);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    sqlDataReader.Close();&lt;br /&gt;    sqlCommand1.Connection.Close();&lt;br /&gt;    sqlCommand1.Dispose();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;foreach&lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf &lt;span style="color: blue;"&gt;in &lt;/span&gt;ListPerformance)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"UPDATE PerformanceTestTable set StringColumn = 'ZZZ' where IntColumn = " &lt;/span&gt;+ perf.IntColumn + &lt;span style="color: rgb(163, 21, 21);"&gt;";"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;&lt;br /&gt;        sqlConnection.Open();&lt;br /&gt;        sqlCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;        sqlCommand.Connection.Close();&lt;br /&gt;        sqlCommand.Dispose();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectBatchUpdate()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt; resultQuery = &lt;span style="color: blue;"&gt;from &lt;/span&gt;p &lt;span style="color: blue;"&gt;in &lt;/span&gt;db.PerformanceTestTables&lt;br /&gt;                                                       &lt;span style="color: blue;"&gt;select &lt;/span&gt;p;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf &lt;span style="color: blue;"&gt;in &lt;/span&gt;resultQuery)&lt;br /&gt;        {&lt;br /&gt;            perf.StringColumn = &lt;span style="color: rgb(163, 21, 21);"&gt;"ZZZ"&lt;/span&gt;;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        db.SubmitChanges();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart5_CBC3/image_4.png"&gt;&lt;img height="249" border="0" width="622" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart5_CBC3/image_thumb_1.png" alt="image" style="border: 0px none ;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;231368,3&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;230136&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1801711&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1800194&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Delete Batch&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the delete batch test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectBatchDelete()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command1 = &lt;span style="color: rgb(163, 21, 21);"&gt;"SELECT IntColumn , StringColumn, DateColumn from PerformanceTestTable "&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand1 = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command1, sqlConnection);&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlDataReader &lt;/span&gt;sqlDataReader = sqlCommand1.ExecuteReader();&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt; ListPerformance = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;while &lt;/span&gt;(sqlDataReader.Read())&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;();&lt;br /&gt;        perf.IntColumn = sqlDataReader.GetInt32(0);&lt;br /&gt;        perf.StringColumn = sqlDataReader.GetString(1);&lt;br /&gt;        perf.DateColumn = sqlDataReader.GetDateTime(2);&lt;br /&gt;&lt;br /&gt;        ListPerformance.Add(perf);&lt;br /&gt;    }&lt;br /&gt;    sqlDataReader.Close();&lt;br /&gt;    sqlCommand1.Connection.Close();&lt;br /&gt;    sqlCommand1.Dispose();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;StringBuilder &lt;/span&gt;sb = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;StringBuilder&lt;/span&gt;();&lt;br /&gt;    &lt;span style="color: blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf &lt;span style="color: blue;"&gt;in &lt;/span&gt;ListPerformance)&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"Delete from PerformanceTestTable where IntColumn = " &lt;/span&gt;+ perf.IntColumn + &lt;span style="color: rgb(163, 21, 21);"&gt;";"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;&lt;br /&gt;        sqlConnection.Open();&lt;br /&gt;        sqlCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;        sqlCommand.Connection.Close();&lt;br /&gt;        sqlCommand.Dispose();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectBatchDelete()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt; resultQuery = &lt;span style="color: blue;"&gt;from &lt;/span&gt;p &lt;span style="color: blue;"&gt;in &lt;/span&gt;db.PerformanceTestTables&lt;br /&gt;                                                       &lt;span style="color: blue;"&gt;select &lt;/span&gt;p;&lt;br /&gt;&lt;br /&gt;        db.PerformanceTestTables.DeleteAllOnSubmit(resultQuery);&lt;br /&gt;&lt;br /&gt;        db.SubmitChanges();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart5_CBC3/image_6.png"&gt;&lt;img height="245" border="0" width="614" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart5_CBC3/image_thumb_2.png" alt="image" style="border: 0px none ;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;964660,4&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;960886&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1719343&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1716473&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In the next part I will talk about conclusions&lt;/p&gt;&lt;img src="http://agilior.pt/blogs/pedro.rainho/aggbug/4938.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pedro Rainho</dc:creator>
            <guid>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4938.aspx</guid>
            <pubDate>Wed, 02 Jul 2008 11:27:18 GMT</pubDate>
            <wfw:comment>http://agilior.pt/blogs/pedro.rainho/comments/4938.aspx</wfw:comment>
            <comments>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4938.aspx#feedback</comments>
            <wfw:commentRss>http://agilior.pt/blogs/pedro.rainho/comments/commentRss/4938.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ADO.net Vs Linq to SQL - Part 4</title>
            <link>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4937.aspx</link>
            <description>&lt;p&gt;The second category that I tested was the store procedure execution.&lt;/p&gt;
&lt;p&gt;The tests I had done for store procedure execution were:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Single Select &lt;/li&gt;
    &lt;li&gt;Select All &lt;/li&gt;
    &lt;li&gt;Single Insert &lt;/li&gt;
    &lt;li&gt;Single Update &lt;/li&gt;
    &lt;li&gt;Single Delete &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Single Select&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the single select test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;SelectSingleViaSp()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"SelectFromPerformanceTestTable"&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;    sqlCommand.CommandType = System.Data.&lt;span style="color: rgb(43, 145, 175);"&gt;CommandType&lt;/span&gt;.StoredProcedure;&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlDataReader &lt;/span&gt;sqlDataReader = sqlCommand.ExecuteReader();&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;count = 0;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;sum = 0;&lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;SelectFromPerformanceTestTableResult&lt;/span&gt;&amp;gt; ListPerformance = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;SelectFromPerformanceTestTableResult&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;if &lt;/span&gt;(sqlDataReader.Read())&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;SelectFromPerformanceTestTableResult &lt;/span&gt;perf = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;SelectFromPerformanceTestTableResult&lt;/span&gt;();&lt;br /&gt;        perf.IntColumn = sqlDataReader.GetInt32(0);&lt;br /&gt;        perf.StringColumn = sqlDataReader.GetString(1);&lt;br /&gt;        perf.DateColumn = sqlDataReader.GetDateTime(2);&lt;br /&gt;        ListPerformance.Add(perf);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    sqlDataReader.Close();&lt;br /&gt;    sqlCommand.Connection.Close();&lt;br /&gt;    sqlCommand.Dispose();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;SelectFromPerformanceTestTableResult &lt;/span&gt;perf &lt;span style="color: blue;"&gt;in &lt;/span&gt;ListPerformance)&lt;br /&gt;    {&lt;br /&gt;        ++count;&lt;br /&gt;        sum += perf.IntColumn;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;SelectSingleViaSp()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;count = 0;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;sum = 0;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;ISingleResult&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;SelectFromPerformanceTestTableResult&lt;/span&gt;&amp;gt; resultQuery = db.SelectFromPerformanceTestTable();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;SelectFromPerformanceTestTableResult &lt;/span&gt;res &lt;span style="color: blue;"&gt;in &lt;/span&gt;resultQuery)&lt;br /&gt;        {&lt;br /&gt;            ++count;&lt;br /&gt;            sum += res.IntColumn;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart4_CA0A/image_2.png"&gt;&lt;img height="254" border="0" width="636" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart4_CA0A/image_thumb.png" alt="image" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="400"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;478,3968&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;477&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1621,371&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1600&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Select All&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the select all test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;SelectAllViaSp()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"SelectAllFromPerformanceTestTable"&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;    sqlCommand.CommandType = System.Data.&lt;span style="color: rgb(43, 145, 175);"&gt;CommandType&lt;/span&gt;.StoredProcedure;&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlDataReader &lt;/span&gt;sqlDataReader = sqlCommand.ExecuteReader();&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;count = 0;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;sum = 0;&lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;SelectAllFromPerformanceTestTableResult&lt;/span&gt;&amp;gt; ListPerformance = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;SelectAllFromPerformanceTestTableResult&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;while &lt;/span&gt;(sqlDataReader.Read())&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;SelectAllFromPerformanceTestTableResult &lt;/span&gt;perf = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;SelectAllFromPerformanceTestTableResult&lt;/span&gt;();&lt;br /&gt;        perf.IntColumn = sqlDataReader.GetInt32(0);&lt;br /&gt;        perf.StringColumn = sqlDataReader.GetString(1);&lt;br /&gt;        perf.DateColumn = sqlDataReader.GetDateTime(2);&lt;br /&gt;        ListPerformance.Add(perf);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    sqlDataReader.Close();&lt;br /&gt;    sqlCommand.Connection.Close();&lt;br /&gt;    sqlCommand.Dispose();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;SelectAllFromPerformanceTestTableResult &lt;/span&gt;perf &lt;span style="color: blue;"&gt;in &lt;/span&gt;ListPerformance)&lt;br /&gt;    {&lt;br /&gt;        ++count;&lt;br /&gt;        sum += perf.IntColumn;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;SelectAllViaSp()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;count = 0;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;sum = 0;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;ISingleResult&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;SelectAllFromPerformanceTestTableResult&lt;/span&gt;&amp;gt; resultQuery = db.SelectAllFromPerformanceTestTable();&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;SelectAllFromPerformanceTestTableResult &lt;/span&gt;res &lt;span style="color: blue;"&gt;in &lt;/span&gt;resultQuery)&lt;br /&gt;        {&lt;br /&gt;            ++count;&lt;br /&gt;            sum += res.IntColumn;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart4_CA0A/image_4.png"&gt;&lt;img height="234" border="0" width="586" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart4_CA0A/image_thumb_1.png" alt="image" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;3615,357&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;3753&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;4368,214&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;4383&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Single Insert&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the single insert test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;InsertSingleViaSp()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"InsertIntoPerformanceTestTable"&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;    sqlCommand.CommandType = System.Data.&lt;span style="color: rgb(43, 145, 175);"&gt;CommandType&lt;/span&gt;.StoredProcedure;&lt;br /&gt;&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    sqlCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;    sqlCommand.Connection.Close();&lt;br /&gt;    sqlCommand.Dispose();&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;InsertSingleViaSp()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        db.InsertIntoPerformanceTestTable();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart4_CA0A/image_6.png"&gt;&lt;img height="230" border="0" width="574" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart4_CA0A/image_thumb_2.png" alt="image" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;2657,916&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1588&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1955,587&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1786&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Single Update&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the single update test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;UpdateSingleViaSp()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"UpdatePerformanceTestTable"&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;    sqlCommand.CommandType = System.Data.&lt;span style="color: rgb(43, 145, 175);"&gt;CommandType&lt;/span&gt;.StoredProcedure;&lt;br /&gt;&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    sqlCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;    sqlCommand.Connection.Close();&lt;br /&gt;    sqlCommand.Dispose();&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;UpdateSingleViaSp()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        db.UpdatePerformanceTestTable();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart4_CA0A/image_8.png"&gt;&lt;img height="253" border="0" width="633" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart4_CA0A/image_thumb_3.png" alt="image" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;882,9599&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;890&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1015,068&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1004&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Single Delete&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the single delete test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DeleteSingleViaSp()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"DeleteFromPerformanceTestTable"&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;    sqlCommand.CommandType = System.Data.&lt;span style="color: rgb(43, 145, 175);"&gt;CommandType&lt;/span&gt;.StoredProcedure;&lt;br /&gt;    &lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    sqlCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;    sqlCommand.Connection.Close();&lt;br /&gt;    sqlCommand.Dispose();&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DeleteSingleViaSp()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        db.DeleteFromPerformanceTestTable();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart4_CA0A/image_10.png"&gt;&lt;img height="251" border="0" width="627" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart4_CA0A/image_thumb_4.png" alt="image" style="border-width: 0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;475,7856&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;477&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1202,613&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1190&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In the next part I will talk about batch execution&lt;/p&gt;&lt;img src="http://agilior.pt/blogs/pedro.rainho/aggbug/4937.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pedro Rainho</dc:creator>
            <guid>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4937.aspx</guid>
            <pubDate>Wed, 02 Jul 2008 11:19:51 GMT</pubDate>
            <wfw:comment>http://agilior.pt/blogs/pedro.rainho/comments/4937.aspx</wfw:comment>
            <comments>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4937.aspx#feedback</comments>
            <wfw:commentRss>http://agilior.pt/blogs/pedro.rainho/comments/commentRss/4937.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ADO.net Vs Linq to SQL - Part 3</title>
            <link>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4935.aspx</link>
            <description>&lt;p&gt;The first category that I had start testing was the direct query execution.&lt;/p&gt;
&lt;p&gt;Direct query execution in ADO.net it's only execution a string with a query, but in Linq to SQL I had used the query notation.&lt;/p&gt;
&lt;p&gt;So, the tests I had done for direct query execution were:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Single Select &lt;/li&gt;
    &lt;li&gt;Select All &lt;/li&gt;
    &lt;li&gt;Single Insert &lt;/li&gt;
    &lt;li&gt;Single Update &lt;/li&gt;
    &lt;li&gt;Single Delete &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Single Select&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the single select test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectSingleSelect()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"SELECT IntColumn , StringColumn, DateColumn from PerformanceTestTable where IntColumn = 1"&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlDataReader &lt;/span&gt;sqlDataReader = sqlCommand.ExecuteReader();&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;count = 0;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;sum = 0;&lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt; ListPerformance = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;if &lt;/span&gt;(sqlDataReader.Read())&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;();&lt;br /&gt;        perf.IntColumn = sqlDataReader.GetInt32(0);&lt;br /&gt;        perf.StringColumn = sqlDataReader.GetString(1);&lt;br /&gt;        perf.DateColumn = sqlDataReader.GetDateTime(2);&lt;br /&gt;        ListPerformance.Add(perf);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    sqlDataReader.Close();&lt;br /&gt;    sqlCommand.Connection.Close();&lt;br /&gt;    sqlCommand.Dispose();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf &lt;span style="color: blue;"&gt;in &lt;/span&gt;ListPerformance)&lt;br /&gt;    {&lt;br /&gt;        ++count;&lt;br /&gt;        sum += perf.IntColumn;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectSingleSelect()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;count = 0;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;sum = 0;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt; resultQuery = &lt;span style="color: blue;"&gt;from &lt;/span&gt;p &lt;span style="color: blue;"&gt;in &lt;/span&gt;db.PerformanceTestTables&lt;br /&gt;                                                       &lt;span style="color: blue;"&gt;where &lt;/span&gt;p.IntColumn == 1&lt;br /&gt;                                                       &lt;span style="color: blue;"&gt;select &lt;/span&gt;p;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf &lt;span style="color: blue;"&gt;in &lt;/span&gt;resultQuery)&lt;br /&gt;        {&lt;br /&gt;            ++count;&lt;br /&gt;            sum += perf.IntColumn;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As you all can see, linq test I had much less code, plus it's more simple to read, plus all the code is verified in compile time.&lt;/p&gt;
&lt;p&gt;The other thing that can be seen is that I try to approach ADO.net to Linq to SQL, and that explains the reason why I had done this:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt; ListPerformance = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;if &lt;/span&gt;(sqlDataReader.Read())&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;();&lt;br /&gt;    perf.IntColumn = sqlDataReader.GetInt32(0);&lt;br /&gt;    perf.StringColumn = sqlDataReader.GetString(1);&lt;br /&gt;    perf.DateColumn = sqlDataReader.GetDateTime(2);&lt;br /&gt;    ListPerformance.Add(perf);&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Because since Linq to SQL internally constructs a IEnumerable&amp;lt;PerformanceTestTable&amp;gt; as a result of the query I try the same approach in ADO.net.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart3_A20F/image_2.png"&gt;&lt;img height="231" border="0" width="577" style="border-width: 0px;" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart3_A20F/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="400"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;469,8076&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;466&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;2747,09&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;2710&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;as you all can see there is a big difference between ADO.Net and Linq to SQL, And in all the tests I had done I never was able to get best performance with Linq to SQL than to ADO.Net.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Select All&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the select all test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectSelectAll()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"SELECT IntColumn , StringColumn, DateColumn from PerformanceTestTable "&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlDataReader &lt;/span&gt;sqlDataReader = sqlCommand.ExecuteReader();&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;count = 0;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;sum = 0;&lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt; ListPerformance = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt;();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;while &lt;/span&gt;(sqlDataReader.Read())&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;();&lt;br /&gt;        perf.IntColumn = sqlDataReader.GetInt32(0);&lt;br /&gt;        perf.StringColumn = sqlDataReader.GetString(1);&lt;br /&gt;        perf.DateColumn = sqlDataReader.GetDateTime(2);&lt;br /&gt;&lt;br /&gt;        ListPerformance.Add(perf);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    sqlDataReader.Close();&lt;br /&gt;    sqlCommand.Connection.Close();&lt;br /&gt;    sqlCommand.Dispose();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf &lt;span style="color: blue;"&gt;in &lt;/span&gt;ListPerformance)&lt;br /&gt;    {&lt;br /&gt;        ++count;&lt;br /&gt;        sum += perf.IntColumn;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectSelectAll()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;count = 0;&lt;br /&gt;    &lt;span style="color: blue;"&gt;int &lt;/span&gt;sum = 0;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;&amp;gt; resultQuery = &lt;span style="color: blue;"&gt;from &lt;/span&gt;p &lt;span style="color: blue;"&gt;in &lt;/span&gt;db.PerformanceTestTables&lt;br /&gt;                                                       &lt;span style="color: blue;"&gt;select &lt;/span&gt;p;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: blue;"&gt;foreach&lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf &lt;span style="color: blue;"&gt;in &lt;/span&gt;resultQuery)&lt;br /&gt;        {&lt;br /&gt;            ++count;&lt;br /&gt;            sum += perf.IntColumn;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart3_A20F/image_4.png"&gt;&lt;img height="235" border="0" width="587" style="border-width: 0px;" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart3_A20F/image_thumb_1.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;2788,928&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;2733&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;5476,776&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;5494&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Single Insert&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the single insert test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectSingleInsert()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;date = &lt;span style="color: rgb(43, 145, 175);"&gt;DateTime&lt;/span&gt;.Now.ToString(&lt;span style="color: rgb(163, 21, 21);"&gt;"yyyy-MM-dd HH:mm:ss"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"INSERT into PerformanceTestTable (StringColumn, DateColumn)values('xxx', '" &lt;/span&gt;+ date + &lt;span style="color: rgb(163, 21, 21);"&gt;"')"&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    sqlCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;    sqlCommand.Connection.Close();&lt;br /&gt;    sqlCommand.Dispose();&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectSingleInsert()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;    &lt;span style="color: rgb(43, 145, 175);"&gt;DateTime &lt;/span&gt;date = &lt;span style="color: rgb(43, 145, 175);"&gt;DateTime&lt;/span&gt;.Now;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable&lt;/span&gt;();&lt;br /&gt;        perf.StringColumn = &lt;span style="color: rgb(163, 21, 21);"&gt;"xxx"&lt;/span&gt;;&lt;br /&gt;        perf.DateColumn = date;&lt;br /&gt;&lt;br /&gt;        db.PerformanceTestTables.InsertOnSubmit(perf);&lt;br /&gt;        db.SubmitChanges();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart3_A20F/image_6.png"&gt;&lt;img height="220" border="0" width="549" style="border-width: 0px;" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart3_A20F/image_thumb_2.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1985,573&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;2126&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;4389,587&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;4196&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Single Update&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the single update test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectSingleUpdate()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"UPDATE PerformanceTestTable set StringColumn = 'ZZZ' where IntColumn = 1"&lt;/span&gt;;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    sqlCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;    sqlCommand.Connection.Close();&lt;br /&gt;    sqlCommand.Dispose();&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectSingleUpdate()&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf = (&lt;span style="color: blue;"&gt;from &lt;/span&gt;p &lt;span style="color: blue;"&gt;in &lt;/span&gt;db.PerformanceTestTables&lt;br /&gt;                                     &lt;span style="color: blue;"&gt;where &lt;/span&gt;p.IntColumn == 1&lt;br /&gt;                                     &lt;span style="color: blue;"&gt;select &lt;/span&gt;p).SingleOrDefault();&lt;br /&gt;&lt;br /&gt;        perf.StringColumn = &lt;span style="color: rgb(163, 21, 21);"&gt;"ZZZ"&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;        db.SubmitChanges();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart3_A20F/image_8.png"&gt;&lt;img height="211" border="0" width="527" style="border-width: 0px;" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart3_A20F/image_thumb_3.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;521,4088&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;535&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;7249,539&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;7126&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h4&gt;&lt;strong&gt;Single Delete&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;for the single delete test I had done the following code:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ADO.net&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectSingleDelete(&lt;span style="color: blue;"&gt;int &lt;/span&gt;deleteId)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection &lt;/span&gt;sqlConnection = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlConnection&lt;/span&gt;(connection);&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;command = &lt;span style="color: rgb(163, 21, 21);"&gt;"Delete from PerformanceTestTable where IntColumn = " &lt;/span&gt;+ deleteId;&lt;br /&gt;    System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand &lt;/span&gt;sqlCommand = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Data.SqlClient.&lt;span style="color: rgb(43, 145, 175);"&gt;SqlCommand&lt;/span&gt;(command, sqlConnection);&lt;br /&gt;&lt;br /&gt;    sqlConnection.Open();&lt;br /&gt;    sqlCommand.ExecuteNonQuery();&lt;br /&gt;&lt;br /&gt;    sqlCommand.Connection.Close();&lt;br /&gt;    sqlCommand.Dispose();&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;public static double &lt;/span&gt;DirectSingleDelete(&lt;span style="color: blue;"&gt;int &lt;/span&gt;deleteId)&lt;br /&gt;{&lt;br /&gt;    &lt;span style="color: blue;"&gt;string &lt;/span&gt;connection = &lt;span style="color: rgb(43, 145, 175);"&gt;ConfigurationManager&lt;/span&gt;.ConnectionStrings[&lt;span style="color: rgb(163, 21, 21);"&gt;"PerformanceTestsConnectionString"&lt;/span&gt;].ConnectionString;&lt;br /&gt;&lt;br /&gt;    System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch &lt;/span&gt;stopWatch = &lt;span style="color: blue;"&gt;new &lt;/span&gt;System.Diagnostics.&lt;span style="color: rgb(43, 145, 175);"&gt;Stopwatch&lt;/span&gt;();&lt;br /&gt;    stopWatch.Start();&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;using &lt;/span&gt;(&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext &lt;/span&gt;db = &lt;span style="color: blue;"&gt;new &lt;/span&gt;&lt;span style="color: rgb(43, 145, 175);"&gt;TestsDataContext&lt;/span&gt;(connection))&lt;br /&gt;    {&lt;br /&gt;        &lt;span style="color: rgb(43, 145, 175);"&gt;PerformanceTestTable &lt;/span&gt;perf = (&lt;span style="color: blue;"&gt;from &lt;/span&gt;p &lt;span style="color: blue;"&gt;in &lt;/span&gt;db.PerformanceTestTables&lt;br /&gt;                                     &lt;span style="color: blue;"&gt;where &lt;/span&gt;p.IntColumn == deleteId&lt;br /&gt;                                     &lt;span style="color: blue;"&gt;select &lt;/span&gt;p).SingleOrDefault();&lt;br /&gt;&lt;br /&gt;        db.PerformanceTestTables.DeleteOnSubmit(perf);&lt;br /&gt;&lt;br /&gt;        db.SubmitChanges();&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    stopWatch.Stop();&lt;br /&gt;    &lt;span style="color: blue;"&gt;return &lt;/span&gt;stopWatch.ElapsedTicks;&lt;br /&gt;}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt; &lt;a href="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart3_A20F/image_10.png"&gt;&lt;img height="215" border="0" width="537" style="border-width: 0px;" alt="image" src="http://agilior.pt/blogs/images/agilior_pt/blogs/pedro.rainho/WindowsLiveWriter/ADO.netVsLinqtoSQLPart3_A20F/image_thumb_4.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;table cellspacing="0" cellpadding="2" border="1" width="402"&gt;
    &lt;tbody&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;ADO.Net&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
            &lt;td width="100" valign="top"&gt;&lt;strong&gt;Linq to SQL&lt;/strong&gt;&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;AVERAGE&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;MEDIAN&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1672,389&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;1654&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;11409,34&lt;/p&gt;
            &lt;/td&gt;
            &lt;td width="100" valign="top"&gt;
            &lt;p&gt;10835&lt;/p&gt;
            &lt;/td&gt;
        &lt;/tr&gt;
    &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;As you all can see Linq to SQL is always more slow that ADO.Net, nothing that I wasn't expecting, but I never thought the difference would be so much :(&lt;/p&gt;
&lt;p&gt;In the next part I will talk about Store procedure execution&lt;/p&gt;&lt;img src="http://agilior.pt/blogs/pedro.rainho/aggbug/4935.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pedro Rainho</dc:creator>
            <guid>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4935.aspx</guid>
            <pubDate>Wed, 02 Jul 2008 08:29:30 GMT</pubDate>
            <wfw:comment>http://agilior.pt/blogs/pedro.rainho/comments/4935.aspx</wfw:comment>
            <comments>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4935.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://agilior.pt/blogs/pedro.rainho/comments/commentRss/4935.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ADO.net Vs Linq to SQL - Part 2</title>
            <link>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4934.aspx</link>
            <description>&lt;p&gt;To measure performance I used the class &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx"&gt;System.Diagnostics.Stopwatch&lt;/a&gt; that was introduced with Dot.Net 2.0. &lt;/p&gt;
&lt;p&gt;"The Stopwatch class assists the manipulation of timing-related performance counters within managed code"&lt;/p&gt;
&lt;p&gt;I could use kernel function &lt;a href="http://msdn.microsoft.com/en-us/library/ms644904(VS.85).aspx"&gt;QueryPerformanceCounter&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/ms644905(VS.85).aspx"&gt;QueryPerformanceFrequency&lt;/a&gt; but I has decided to used this managed class &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx"&gt;Stopwatch&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.aspx"&gt;Stopwatch&lt;/a&gt; class I had used properties &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.elapsedmilliseconds.aspx"&gt;ElapsedMilliseconds&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.elapsedticks.aspx"&gt;ElapsedTicks&lt;/a&gt; and I had also used &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.start.aspx"&gt;Start&lt;/a&gt; method and &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.stop.aspx"&gt;Stop&lt;/a&gt; method.&lt;/p&gt;
&lt;p&gt;The first property &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.elapsedmilliseconds.aspx"&gt;ElapsedMilliseconds&lt;/a&gt; was soon abandoned by me because in some tests the result was zero. If I want to measure anything and the result is zero it's kind a strange :|.&lt;/p&gt;
&lt;p&gt;So I started only using &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.elapsedticks.aspx"&gt;ElapsedTicks&lt;/a&gt; and if I want the value in milliseconds I only had to do &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.elapsedticks.aspx"&gt;ElapsedTicks&lt;/a&gt; / &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.stopwatch.frequency.aspx"&gt;Frequency&lt;/a&gt; / 1000d and I get the value in milliseconds.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;So in all my tests and in the charts the value that appear is always in Ticks.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In next part I will start talking about my tests&lt;/p&gt;&lt;img src="http://agilior.pt/blogs/pedro.rainho/aggbug/4934.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pedro Rainho</dc:creator>
            <guid>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4934.aspx</guid>
            <pubDate>Wed, 02 Jul 2008 07:56:39 GMT</pubDate>
            <wfw:comment>http://agilior.pt/blogs/pedro.rainho/comments/4934.aspx</wfw:comment>
            <comments>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4934.aspx#feedback</comments>
            <wfw:commentRss>http://agilior.pt/blogs/pedro.rainho/comments/commentRss/4934.aspx</wfw:commentRss>
        </item>
        <item>
            <title>ADO.net Vs Linq to SQL - Part 1</title>
            <link>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4933.aspx</link>
            <description>&lt;p&gt;First of all I love Linq.&lt;/p&gt;
&lt;p&gt;And ever since I started using Linq to SQL that I want to do some tests comparing the old ADO.net and Linq to SQL, and finally I had some free time this weekend so I did it.&lt;/p&gt;
&lt;p&gt;For doing the tests I had:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Create a Database &lt;/li&gt;
    &lt;li&gt;Create a Table named "PerformanceTestTable" &lt;/li&gt;
    &lt;li&gt;Create 3 columns
    &lt;ul&gt;
        &lt;li&gt;IntColumn &lt;/li&gt;
        &lt;li&gt;StringColumn &lt;/li&gt;
        &lt;li&gt;DateColumn &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;CREATE TABLE &lt;/span&gt;[dbo].[PerformanceTestTable](&lt;br /&gt;    [IntColumn] [int] &lt;span style="color: blue;"&gt;IDENTITY&lt;/span&gt;(1,1) &lt;span style="color: blue;"&gt;NOT NULL&lt;/span&gt;,&lt;br /&gt;    [StringColumn] [nchar](10) &lt;span style="color: blue;"&gt;NOT NULL&lt;/span&gt;,&lt;br /&gt;    [DateColumn] [datetime] &lt;span style="color: blue;"&gt;NOT NULL&lt;/span&gt;,&lt;br /&gt; &lt;span style="color: blue;"&gt;CONSTRAINT &lt;/span&gt;[PK_PerformanceTestTable] &lt;span style="color: blue;"&gt;PRIMARY KEY CLUSTERED &lt;br /&gt;&lt;/span&gt;(&lt;br /&gt;    [IntColumn] &lt;span style="color: blue;"&gt;ASC&lt;br /&gt;&lt;/span&gt;)&lt;span style="color: blue;"&gt;WITH &lt;/span&gt;(PAD_INDEX  = &lt;span style="color: blue;"&gt;OFF&lt;/span&gt;, STATISTICS_NORECOMPUTE  = &lt;span style="color: blue;"&gt;OFF&lt;/span&gt;, IGNORE_DUP_KEY = &lt;span style="color: blue;"&gt;OFF&lt;/span&gt;, ALLOW_ROW_LOCKS  = &lt;span style="color: blue;"&gt;ON&lt;/span&gt;, ALLOW_PAGE_LOCKS  = &lt;span style="color: blue;"&gt;ON&lt;/span&gt;) &lt;span style="color: blue;"&gt;ON &lt;/span&gt;[PRIMARY]&lt;br /&gt;) &lt;span style="color: blue;"&gt;ON &lt;/span&gt;[PRIMARY]&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Now, for every test I had done the following:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Every test started from a initial condition
    &lt;ul&gt;
        &lt;li&gt;This initial condition is a reset in the table (delete all records and insert 500 test records) &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Repeat every test 500 times &lt;/li&gt;
    &lt;li&gt;Every test using ADO.net has a similar test in Linq to SQL &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;For reset the table I had done this procedure&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;CREATE PROCEDURE &lt;/span&gt;ResetPerformanceTestTable &lt;span style="color: blue;"&gt;AS&lt;br /&gt;BEGIN&lt;br /&gt;    SET NOCOUNT ON&lt;/span&gt;;&lt;br /&gt;    &lt;span style="color: blue;"&gt;delete from &lt;/span&gt;PerformanceTestTable&lt;br /&gt;    &lt;br /&gt;    &lt;span style="color: blue;"&gt;DBCC &lt;/span&gt;CHECKIDENT (PerformanceTestTable, reseed, 0)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;INSERT into &lt;/span&gt;PerformanceTestTable (StringColumn, DateColumn)&lt;span style="color: blue;"&gt;values&lt;/span&gt;(&lt;span style="color: rgb(163, 21, 21);"&gt;'aaa'&lt;/span&gt;, &lt;span style="color: blue;"&gt;getdate&lt;/span&gt;())&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;...&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;500 times&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;END&lt;br /&gt;&lt;/span&gt;GO&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The tests I had done were divided in tree categories:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Direct query execution &lt;/li&gt;
    &lt;li&gt;Store Procedure Executing &lt;/li&gt;
    &lt;li&gt;Batch execution &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In the next part I will be talking about what I had used for measure performance&lt;/p&gt;&lt;img src="http://agilior.pt/blogs/pedro.rainho/aggbug/4933.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pedro Rainho</dc:creator>
            <guid>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4933.aspx</guid>
            <pubDate>Wed, 02 Jul 2008 07:42:16 GMT</pubDate>
            <wfw:comment>http://agilior.pt/blogs/pedro.rainho/comments/4933.aspx</wfw:comment>
            <comments>http://agilior.pt/blogs/pedro.rainho/archive/2008/07/02/4933.aspx#feedback</comments>
            <wfw:commentRss>http://agilior.pt/blogs/pedro.rainho/comments/commentRss/4933.aspx</wfw:commentRss>
        </item>
        <item>
            <title>xmlns:xsi with Linq to XML</title>
            <link>http://agilior.pt/blogs/pedro.rainho/archive/2008/05/30/4694.aspx</link>
            <description>&lt;p&gt;If someone needs to add a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" to a xml element using Linq to XML all you have to do is something like this&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;XNamespace &lt;/span&gt;xsi = &lt;span style="color: #a31515"&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;;
&lt;span style="color: #2b91af"&gt;XDocument &lt;/span&gt;doc = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XDocument&lt;/span&gt;(
    &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XElement&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Root"&lt;/span&gt;,
        &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;XAttribute&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;XNamespace&lt;/span&gt;.Xmlns + &lt;span style="color: #a31515"&gt;"xsi"&lt;/span&gt;, xsi)));&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;maybe it's not very intuitive but works :)&lt;/p&gt;&lt;img src="http://agilior.pt/blogs/pedro.rainho/aggbug/4694.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pedro Rainho</dc:creator>
            <guid>http://agilior.pt/blogs/pedro.rainho/archive/2008/05/30/4694.aspx</guid>
            <pubDate>Fri, 30 May 2008 07:54:53 GMT</pubDate>
            <wfw:comment>http://agilior.pt/blogs/pedro.rainho/comments/4694.aspx</wfw:comment>
            <comments>http://agilior.pt/blogs/pedro.rainho/archive/2008/05/30/4694.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://agilior.pt/blogs/pedro.rainho/comments/commentRss/4694.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Last book I read</title>
            <link>http://agilior.pt/blogs/pedro.rainho/archive/2008/05/27/4654.aspx</link>
            <description>&lt;p&gt;This month I haven't write much here in the blog, so I will talk a little about the last book I read. The book name is "Pro Linq Language Integrated Query in C# 2008", it's from the publisher APRESS and the author is Joseph Rattz Jr. The book is available &lt;a href="http://www.amazon.co.uk/Pro-LINQ-Language-Integrated-Query/dp/1590597893/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1211551914&amp;amp;sr=8-1"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;My opinion is simple, I love the book. It's a good book to start and a good book to consult when I have some problem to resolve.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The book starts covering the new C# 3.0 language additions, in my opinion this is essential to start using Linq, and covers Linq to objects, Linq to XML, Linq to Dataset and Linq to SQL.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;The book in general is very good and don't fool your self with the name "Pro Linq...." because I recommend the book to every one that wants to start using Linq. This is a simple book to read and has lots of samples well commented that explains most of the extension methods used in queries.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;This is another benefit of this book is that explains how to use Dot Notation and the Query Notation. And believe me you can choose any one because both generate the same IL code. &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;There are some things is missing in this book, or with a very small explanation&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Linq to Entities, even in a beta stage would be great to see it in this book &lt;/li&gt;    &lt;li&gt;Expressions trees, even now I'm try to find a real good book that contains everything I need to know about expressions trees &lt;/li&gt;    &lt;li&gt;And final this book doesn't cover custom Linq providers. :( &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;These last two I really like to know a book where they are covered in deep. If any one knows a book that covers those two in deep mail me :)&lt;/p&gt;&lt;img src="http://agilior.pt/blogs/pedro.rainho/aggbug/4654.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Pedro Rainho</dc:creator>
            <guid>http://agilior.pt/blogs/pedro.rainho/archive/2008/05/27/4654.aspx</guid>
            <pubDate>Tue, 27 May 2008 20:32:37 GMT</pubDate>
            <wfw:comment>http://agilior.pt/blogs/pedro.rainho/comments/4654.aspx</wfw:comment>
            <comments>http://agilior.pt/blogs/pedro.rainho/archive/2008/05/27/4654.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://agilior.pt/blogs/pedro.rainho/comments/commentRss/4654.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>