<?xml version="1.0"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:georss="http://www.georss.org/georss" version="2.0">
  <channel>
    <georss:point>50.7234 14.9296</georss:point>
    <title>rarouš.weblog  - komentáře k článku</title>
    <link>http://rarous.net/
    <description>Komentáře k článkům rarouš.weblog.</description>
    <copyright>© 2004 - 2008 Aleš Roubíček. All rights reserved.</copyright>
    <generator>Gryphoon Weblog v1.78</generator>
    <item>
      <author>Rene</author>
      <title>Komentář k článku LINQ a lenivé vyhodnocování</title>
      <guid>http://rarous.net/weblog/380-linq-a-lenive-vyhodnocovani.aspx#km1180</guid>
      <link>http://rarous.net/weblog/380-linq-a-lenive-vyhodnocovani.aspx#km1180
      <pubDate>Sun, 21 Feb 2010 09:36:57 GMT</pubDate>
      <description>&lt;p&gt;Pěkné kázání o&amp;#160;pravdě takhle v&amp;#160;neděli. Lazy
vyhodnocování mám také rád, ale bohužel je občas matoucí a
mnohonásobně dražší než volání metody ToList a ToArray.
Představ si, že máš metodu GetUiDescriptors, která na základě
volání &lt;em&gt;mnoha dalších&lt;/em&gt; služeb a metod business objektů
vrátí IEnumerable&amp;lt;I&amp;#173;UiDescriptor&amp;gt;. Sada výsledků není
ale samozřejmě ani potenciálně nekonečná.:) Když metodu uděláš
lazy (yield return), je výhodou pouze to, že neplatíš žádnou
režii, jestliže klient nakonec o&amp;#160;výsledek volání nemá zájem
a kolekci neprojde, což není moc častý případ. Nepříjemná
situace nastane, když klient bude výsledek procházet vícekrát.
A&amp;#160;to nastane už tehdy, když zavolá Count, aby zjistil počet
prvků v&amp;#160;kolekci a poté kolekci projde. Veškerá režie spojená
s&amp;#160;voláním služeb a metod business obejktů se platí 2&amp;#215;.
Takže vrátit List (klidně skrytý za IEnumerable) je zde mnohem
lepší a režie Listu je nepatrná (odstranění Listu ve prospěch
Array je podle mých testů zbytečná mikrooptimalizace). IMO by bylo
nejlepší, aby u&amp;#160;každé metody bylo důsledně zdokumentováno
i&amp;#160;se symbolem v&amp;#160;Intellisense, zda je či není lazy.&lt;/p&gt;

&lt;!-- generated by Texy! --&gt;</description>
    </item>
    <item>
      <author>Aleš Roubíček</author>
      <title>Komentář k článku LINQ a lenivé vyhodnocování</title>
      <guid>http://rarous.net/weblog/380-linq-a-lenive-vyhodnocovani.aspx#km1181</guid>
      <link>http://rarous.net/weblog/380-linq-a-lenive-vyhodnocovani.aspx#km1181
      <pubDate>Sun, 21 Feb 2010 11:02:57 GMT</pubDate>
      <description>
&lt;p&gt;&lt;a
href="http://rarous.net/weblog/380-linq-a-lenive-vyhodnocovani.aspx#km1180"&gt;[1]
Rene:&lt;/a&gt; Jak jsem v&amp;#160;článku psal, vždy je potřeba držet se
kontextu. Pokud chci vypsat dvacet položek z&amp;#160;databáze na stráku,
nevyplatí se lazy loading. Pokud ale zpracovávám data, která tečou
z&amp;#160;nějaké služby, se kterou mi může spojení kdykoli spadnout,
pak mi lazy loading přijde ideální.&lt;/p&gt;

&lt;p&gt;Ad &lt;code&gt;Count&lt;/code&gt;. Pokud píšu aplikaci, kde počítám, že
pracuji s&amp;#160;proudem dat, nebudu chtít tento proud materializovat.
Samozřejmě to musí být zdokumentováno, aby se o&amp;#160;to nepokusil
někdo jiný. :)&lt;/p&gt;

&lt;!-- generated by Texy! --&gt;</description>
    </item>
  </channel>
</rss>
