<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>.NET Framework</title><link>https://www.dotnetzone.gr:443/cs/forums/14/ShowForum.aspx</link><description>Θέματα για threading, remoting, reflection, exception handling, security, regex κλπ.</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: 3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6391.aspx</link><pubDate>Mon, 24 Oct 2005 23:21:51 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6391</guid><dc:creator>Aris</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6391.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6391</wfw:commentRss><description>&lt;P&gt;Ευτυχώς που δεν το πιστεύεις φανατικά ... &lt;img src="/cs/emoticons/emotion-2.gif" alt="Big Smile [:D]" /&gt;&lt;/P&gt;
&lt;P&gt;Εφ' όσον εξετάζουμε την διαφορά ταχύτητας Activator vs. Reflection, πρέπει - κατά την γνώμη μου -&amp;nbsp;να εξασφαλίσουμε ότι:&lt;BR&gt;- το assembly που περιέχει τα types είναι στην μνήμη (= δεν έχουμε χρήση δίσκου)&lt;BR&gt;- κάνουμε κάποιο memory allocation (= ώστε να υπάρχει instance "data segment")&lt;BR&gt;- ζητάμε το ίδιο type&lt;BR&gt;&lt;BR&gt;Η διαφορά οφείλεται στο ότι η κλήση της Assembly.CreateInstance δημιουργεί ένα&amp;nbsp;instance&amp;nbsp;του τύπου&amp;nbsp;ενώ η κλήση της Activator.CreateInstance δημιουργεί ένα instance του τύπου &lt;U&gt;και&lt;/U&gt; ένα&amp;nbsp;marshalByRef object για remoting.&lt;/P&gt;
&lt;P&gt;Άρης&lt;/P&gt;</description></item><item><title>Απ: 3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6347.aspx</link><pubDate>Sat, 22 Oct 2005 20:45:31 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6347</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6347.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6347</wfw:commentRss><description>Πιστεύω -αν και όχι φανατικά - οτι η απόδωση του activator έχει πολύ να κάνει με:&lt;br&gt;&lt;br&gt;1. Το πόσο συχνά ζητάμε νέο instance (έχει ή δεν έχει κάνει expire η όποια cache διατηρεί εσωτερικά)&lt;br&gt;2. Τι "ποικιλία" παρουσιάζουν τα instances που του ζητάμε να φτιάξει&lt;br&gt;&lt;br&gt;Ένα πιο ρεαλιστικό τέστ θα περίμενε λίγο πρωτού ζητήσει το επόμενο αντικείμενο, και θα ζητούσε αντικείμενα τυχαίων τύπων, απο διάφορα assemblies. Αλλά προς το παρόν .. είναι σαββατοκύριακο !!! :D</description></item><item><title>Απ: 3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6334.aspx</link><pubDate>Sat, 22 Oct 2005 01:32:19 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6334</guid><dc:creator>Aris</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6334.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6334</wfw:commentRss><description>&lt;P&gt;Δοκίμασα τον κώδικα, με μία αλλαγή. Φτιάχνω &lt;FONT face="Courier New" color=#000080&gt;System.IntPtr&lt;/FONT&gt; (assembly &lt;FONT face="Courier New" color=#000080&gt;mscorlib&lt;/FONT&gt;).&lt;/P&gt;
&lt;P&gt;Οι κλήσεις με Activator είνα μεν&amp;nbsp;αργότερες (195 με 165 είναι τυπικό αποτέλεσμα), αλλά όχι τραγικά. &lt;BR&gt;Η διαφορά οφείλεται στο "βάρος" του &lt;FONT face="Courier New" color=#000080&gt;ObjectHandle&lt;/FONT&gt; και στην κλήση της&amp;nbsp;&lt;FONT face="Courier New" color=#000080&gt;Unwrap()&lt;FONT face=Tahoma color=#000000&gt;.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000000&gt;Άρης&lt;/FONT&gt;&lt;/P&gt;</description></item><item><title>Απ: 3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6312.aspx</link><pubDate>Fri, 21 Oct 2005 18:54:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6312</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6312.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6312</wfw:commentRss><description>Οκ ... νομίζω οτι μόλις ανέβασα το status μου απο "ψυχάκιας" σε "αρρωστάκι" :D&lt;br&gt;

&lt;br&gt;

&lt;b&gt;ΟΙ ΚΩΔΙΚΕΣ:&lt;/b&gt;&lt;br&gt;

&lt;br&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Reflection;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;using&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; System.Runtime.Remoting;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;; color: blue;"&gt;namespace&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt; VariousTests&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; Summary description for Class1.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt;
Class1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; The main entry point
for the application.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: gray;"&gt;///&lt;/span&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;span style="color: gray;"&gt;&amp;lt;/summary&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;[STAThread]&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;TestInstantiation();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.ReadLine();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;
&lt;span style="color: blue;"&gt;delegate&lt;/span&gt; &lt;span style="color: blue;"&gt;object&lt;/span&gt;
CreateInstance(&lt;span style="color: blue;"&gt;string&lt;/span&gt; className, &lt;span style="color: blue;"&gt;string&lt;/span&gt; assemblyName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;
&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt;
TestInstantiation(){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt; className =
"TestGeneric.SecondLevelChild";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;string&lt;/span&gt; assemblyName =
"TestGeneric";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;long&lt;/span&gt; repetitions = 1000000;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;long&lt;/span&gt; totalTicks = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&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;repetitions; i++){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;totalTicks +=
CountMethod(&lt;span style="color: blue;"&gt;new&lt;/span&gt;
CreateInstance(CreateWithActivator), className, assemblyName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;long&lt;/span&gt; avgTicksActivator
= totalTicks/repetitions;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;totalTicks = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;for&lt;/span&gt;(&lt;span style="color: blue;"&gt;int&lt;/span&gt; c=0;
c&amp;lt;repetitions; c++){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;totalTicks +=
CountMethod(&lt;span style="color: blue;"&gt;new&lt;/span&gt;
CreateInstance(CreateWithReflection), className, assemblyName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;long&lt;/span&gt; avgTicksReflection = totalTicks/repetitions;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine("Activator
average for {0} instances: {1}", repetitions,&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;avgTicksActivator);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Console.WriteLine("Reflection
average for {0} instances: {1}", repetitions,&lt;span style=""&gt;&amp;nbsp; &lt;/span&gt;avgTicksReflection);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;
&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;long&lt;/span&gt;
CountMethod(CreateInstance method, &lt;span style="color: blue;"&gt;string&lt;/span&gt;
className, &lt;span style="color: blue;"&gt;string&lt;/span&gt; assemblyName){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;long&lt;/span&gt; startTicks = DateTime.Now.Ticks;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;object&lt;/span&gt; obj = method(className, assemblyName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;long&lt;/span&gt; endTicks = DateTime.Now.Ticks;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; (endTicks-startTicks);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;
&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;object&lt;/span&gt;
CreateWithActivator(&lt;span style="color: blue;"&gt;string&lt;/span&gt; className, &lt;span style="color: blue;"&gt;string&lt;/span&gt; assemblyName){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;ObjectHandle handle =
Activator.CreateInstance(assemblyName, className);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; handle.Unwrap();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt;
&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;object&lt;/span&gt;
CreateWithReflection(String className, &lt;span style="color: blue;"&gt;string&lt;/span&gt;
assemblyName){&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;Assembly assembly =
Assembly.LoadWithPartialName(assemblyName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue;"&gt;return&lt;/span&gt; assembly.CreateInstance(className, &lt;span style="color: blue;"&gt;false&lt;/span&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;span style=""&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal" style=""&gt;&lt;span style="font-size: 9pt; font-family: &amp;quot;Courier New&amp;quot;;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;



&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;


.. λοιπόν, αν δεν έχω κάνει κάπου λάθος στον παραπάνω κώδικα, τα αποτελέσματα είναι τα εξής:&lt;br&gt;

&lt;br&gt;

Με 1000 instantiations, Activator: 1560 ticks, Reflection: 0 ticks&lt;br&gt;

Με 1000000 instantiations, Activator: 220 ticks, Reflection: 189 ticks&lt;br&gt;

&lt;br&gt;

Όπως καταλαβαίνετε, όσο περισσότερα consecutive instantiations κάνουμε,
τόσο η απόδωση του Activator βελτιώνεται και τείνει να φτάσει στην
ταχύτητα του Reflection. &lt;br&gt;

&lt;br&gt;

Και μετά απο όλα αυτά, αναρωτιέμαι εγώ ... μήπως πρέπει τώρα να κάνω
Find &amp;amp; Replace όλα τα Activator σε ότι κώδικα έχω γράψει ως τώρα,
και να τ'αντικαταστήσω με Reflection calls?&lt;br&gt;

&lt;br&gt;

Πολύ καλή μέρα μας .. ας δουλέψουμε και λίγο τώρα ( &lt;i&gt;αχ ... πάντα προτιμούσα αυτο το &lt;b&gt;πρώτο &lt;/b&gt;γράμμα στο &lt;b&gt;R'n'D&lt;/b&gt; ... &lt;/i&gt;;] )</description></item><item><title>Απ: 3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6309.aspx</link><pubDate>Fri, 21 Oct 2005 18:02:29 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6309</guid><dc:creator>Χρήστος Γεωργακόπουλος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6309.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6309</wfw:commentRss><description>&lt;P&gt;&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;KelMan wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td width="100%" valign="top" class="txt4"&gt;H ταχύτητα είναι ένας από τους παράγοντες που μας οδηγούν τις επιλογές... Έτσι, για να γίνεται κουβέντα, πως τους χρησιμοποιείτε αυτούς τους τρόπους μέσα στις εφαρμογές σας; Τι προβλήματα σας λύνουν; Να υποθέσω ότι υπάρχουν ανάλογα σενάρια που είναι προτιμότερο να χρησιμοποιήσουμε κάποιον από αυτούς τους τρόπους, πέραν του πρώτου;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/P&gt;
&lt;P&gt;Εγώ έχω ένα μεγάλο αριθμό παραμετρικών πινάκων που χειρίζονται από ένα caching σύστημα. Αυτό μέσω web service ζητάει τον πίνακα που θέλει ο χρήστης. Αν έχω 100 παραμετρικούς πίνακες, θέλω 100 web methods στα web services, 100 ρουτίνες στο DAL για να παίρνουν τα δεδομένα από τη βάση, 100 ρουτίνες στο DAL για να φέρνουν την ημερομηνία τελευταίας τροποποίησης. Σε όλες αυτές ρισκάρω να έχω λάθη από τους developers τα οποία μπορεί να μην φανούν απ' ευθείας στην εφαρμογή λόγω του caching. Οπότε αντί των 300 και βάλε ρουτινών που χρειάζομαι (έχει αντίστοιχα πράγματα και στον client), έχω μία από κάθε είδος η οποία γίνεται initiate δυναμικά απλά δίνοντας το όνομα του πίνακα. Έτσι το caching περνάει ανώδυνα στους developers οι οποίοι όταν έχουν ένα νέο παραμετρικό πίνακα απλά φτιάχουν το αντίστοιχο typed dataset και ζητάνε τα δεδομένα από το caching σύστημα μόνο με το όνομα του πίνακα. Είναι πραγματικά ...θεόσταλτη λύση...&lt;/P&gt;</description></item><item><title>Απ: 3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6308.aspx</link><pubDate>Fri, 21 Oct 2005 17:53:36 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6308</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6308.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6308</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;KelMan wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td width="100%" valign="top" class="txt4"&gt;H ταχύτητα είναι ένας από τους παράγοντες που μας
οδηγούν τις επιλογές... Έτσι, για να γίνεται κουβέντα, πως τους
χρησιμοποιείτε αυτούς τους τρόπους μέσα στις εφαρμογές σας; Τι
προβλήματα σας λύνουν; Να υποθέσω ότι υπάρχουν ανάλογα σενάρια που
είναι προτιμότερο να χρησιμοποιήσουμε κάποιον από αυτούς τους τρόπους,
πέραν του πρώτου;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;br&gt;
&lt;br&gt;
... τυπικά, εγώ χρησιμοποιώ το Dynamic CLass Loading οπουδήποτε μπορώ
να .. "σφίξω" pluggable functionality. Π.χ Database providers, αλλά
γενικότερα ... Providers. Συνήθως "κρύβω" τις κλάσσεις μου πίσω απο ένα
interface, και χρησιμοποιώντας ένα σχετικά τυποποιημένο πλέον Factory
class και λίγη Xml, επιστρέφω&amp;nbsp; implementations του εκάστοστε
provider που τις ορίζω στο Xml. &lt;br&gt;
&lt;br&gt;
Ως τώρα χρησιμοποιούσα τον Activator κατα κόρον λόγω ... ευκολίας, και
κυρίως επειδή πρέπει να ξανα-ανακαλύψεις τον τροχό αν επιχειρήσεις να
υλοποιήσεις το functionality του Activator μόνος σου. Τώρα σκέφτομαι να
ρίξω μια ματιά περισσότερο όταν βρώ το χρόνο στο reflection, κι ας
φοβάμαι oτι τελικά .. θα γράψω πάλι τον Activator με άλλο όνομα :P (&lt;i&gt;Reflectivator &lt;/i&gt;ίσως?!?!)&lt;br&gt;
&lt;br&gt;
Χρειάζεται testing και πειραματισμό αυτή η ιστορία, και δυστυχώς
τρέχουμε σαν τρελλοί στη δουλειά προς το παρόν για να πείς οτι έχεις το
χρόνο και την όρεξη να παίξεις ... τέλος πάντων όμως, όταν πέφτεις σε
μια λίμνη είναι μάταιο να αναρωτιέσαι αν τελικά ήθελες να μάθεις να
κολυμπάς - είσαι ήδη μέσα !!!&amp;nbsp; Οπότε ...&amp;nbsp; θα το κοιτάξω όταν
βρώ περισσότερο χρόνο σε πιο βάθος, εκτός κι αν το κοιτάξει κανένας
άλλος πριν απο 'μένα :)&lt;br&gt;
&lt;br&gt;
Καλημέρα μας &lt;br&gt;</description></item><item><title>Απ: 3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6305.aspx</link><pubDate>Fri, 21 Oct 2005 16:00:58 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6305</guid><dc:creator>KelMan</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6305.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6305</wfw:commentRss><description>H ταχύτητα είναι ένας από τους παράγοντες που μας οδηγούν τις επιλογές... Έτσι, για να γίνεται κουβέντα, πως τους χρησιμοποιείτε αυτούς τους τρόπους μέσα στις εφαρμογές σας; Τι προβλήματα σας λύνουν; Να υποθέσω ότι υπάρχουν ανάλογα σενάρια που είναι προτιμότερο να χρησιμοποιήσουμε κάποιον από αυτούς τους τρόπους, πέραν του πρώτου;</description></item><item><title>Απ: 3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6296.aspx</link><pubDate>Fri, 21 Oct 2005 01:49:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6296</guid><dc:creator>Χρήστος Γεωργακόπουλος</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6296.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6296</wfw:commentRss><description>Πολύ καλό... κι εγώ είχα πάντα την περιέργεια... Αλλά δεν περίμενα με reflection να βγάζει μηδέν...</description></item><item><title>Απ: 3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6291.aspx</link><pubDate>Thu, 20 Oct 2005 23:15:49 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6291</guid><dc:creator>objectref</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6291.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6291</wfw:commentRss><description>&lt;BLOCKQUOTE&gt;&lt;table width="85%"&gt;&lt;tr&gt;&lt;td class="txt4"&gt;&lt;img src="/cs/Themes/default/images/icon-quote.gif"&gt;&amp;nbsp;&lt;strong&gt;anjelinio wrote:&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="quoteTable"&gt;&lt;table width="100%"&gt;&lt;tr&gt;&lt;td width="100%" valign="top" class="txt4"&gt; 
&lt;P&gt;&lt;FONT face=Arial&gt;Οκ, ο δεύτερος είναι με χρήση του Activator. Να κι οι κώδικες:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;&lt;CODE&gt;static MyObject CreateByActivator(){&lt;BR&gt;ObjectHandle obj = Activator.CreateInstance("Tests", "Tests.MyObject");&lt;BR&gt;return (MyObject) obj.Unwrap();&lt;BR&gt;}&lt;FONT face=Tahoma&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/BLOCKQUOTE&gt;&lt;/FONT&gt;&lt;/CODE&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma&gt;&lt;CODE&gt;Εγω σε ενα σχετικα&amp;nbsp;"περιεργο" project μου (δες στο Blog μου αν θελεις να δεις περι τινος προκειται),&amp;nbsp;χρησιμοποιω σε καποιο σημειο αυτο που εγραψες πιο πανω.&lt;/CODE&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma&gt;&lt;CODE&gt;Εκει που το χρησιμοποιω&amp;nbsp;ομως, ο χρονος που κανει δεν με απασχολει και πραγματικα μου λυνει τα χερια ετσι οπως εχω "στησει" το application, ασε που δεν "φαινεται" η σχετικη καθυστερηση.&lt;/CODE&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma&gt;&lt;CODE&gt;&lt;/CODE&gt;&lt;/FONT&gt;&lt;FONT face=Tahoma&gt;&lt;CODE&gt;Σε αλλες περιπτωσεις ομως π.χ. loops κτλ, μαλλον θα χρειαζεται αλλο design,&amp;nbsp;εκτος βεβαια, οπως ειπα και πιο πανω, αν ειναι σε σημειο που δεν σε πολυ-πειραζει...&lt;/CODE&gt;&lt;/FONT&gt;&lt;/P&gt;</description></item><item><title>Απ: 3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6290.aspx</link><pubDate>Thu, 20 Oct 2005 21:51:42 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6290</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6290.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6290</wfw:commentRss><description>... πάλι χάλια, μου τα'κανε ο editor γαμώτο :(</description></item><item><title>3 τρόποι να κάνεις new ...</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/6289.aspx</link><pubDate>Thu, 20 Oct 2005 21:50:48 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:6289</guid><dc:creator>anjelinio</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/6289.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=14&amp;PostID=6289</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Arial&gt;Με όλη τη χαρά τελευταία με το ΑΟΡ κι όλα τα σχετικά νέα trends, αναρωτηθήκατε ποτέ τι κόστος έχει να κάνεις instantiate objects δυναμικά, στο runtime;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Τον τελευταίο καιρό χρησιμοποιώ αρκετά το Dunamic Class Loading, χρησιμοποιώντας το &lt;CODE&gt;Activator.CreateInstance(...)&lt;/CODE&gt;. Κατανοώ οτι έτσι βάζω ένα κάποιο επιπλέον overhead στην εφαρμογή μου, αλλά ως τώρα, το θεωρούσα ένα λογικό tradeoff σε σχέση με την ευελιξία που κέρδιζα.&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Arial&gt;Πριν μερικές μέρες, σκέφτηκα οτι θα μπορούσα ίσως να πάρω τον default no-args constructor ενός τύπου, και να τον καλέσω με Reflection αντικαθιστώντας έτσι τα &lt;CODE&gt;Activator.CreateInstance(...)&lt;/CODE&gt; calls. Αναρωτήθηκα τι διαφορά στο performance θα έχουν οι δύο τρόποι, και τι διαφορά θα έχουν επίσης με ένα κανονικό instantiation;&lt;BR&gt;&lt;/FONT&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Έτσι, έγραψα ένα μικρό Console App για να δοκιμάσω να κάνω συγκρίσεις μεταξύ των 3 τρόπων. Έγραψα 3 μεθόδους, μια για κάθε τρόπο instantiation.&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;O πρώτος είναι ο κανονικός, κλασσικός τρόπος:&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;static&lt;/span&gt; MyObject CreateDirect() {&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;return&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; MyObject();&lt;br /&gt;}&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;… Πυρηνική Φυσική ε;&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Οκ, ο δεύτερος είναι με χρήση του Activator. Να κι οι κώδικες:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;static&lt;/span&gt; MyObject CreateByActivator(){&lt;br /&gt;ObjectHandle obj &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; Activator.CreateInstance(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"Tests"&lt;/span&gt;, &lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"Tests.MyObject"&lt;/span&gt;);&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;return&lt;/span&gt; (MyObject) obj.Unwrap();&lt;br /&gt;}&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Λίγο πιο σύνθετο, αλλά όχι κάτι τρελλό. Επίσης, χρησιμοποιεί το&amp;nbsp; System.Runtime.Remoting namespace. &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Ο τρίτος τρόπος είναι να πάρω τις λεπτομερειες του constructor απο το Type, και να τον καλέσω με Invoke(...). Source:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;static&lt;/span&gt; MyObject CreateByReflection(){&lt;br /&gt;Type myType &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;typeof&lt;/span&gt;(MyObject);&lt;br /&gt;ConstructorInfo constr &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; myType.GetConstructor(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; System.Type[0]);&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;return&lt;/span&gt; (MyObject) constr.Invoke(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;object&lt;/span&gt;[0]);&lt;br /&gt;}&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Πολύ όμορφα ως εδω ...&amp;nbsp; να και η Main(args[]) η οποία τρέχει και τις τρείς μεθόδους, και&amp;nbsp; γράφει τους χρόνους καθεμιάς: &lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;static&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;void&lt;/span&gt; Main(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;{&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;long&lt;/span&gt; startTicks, endTicks;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Green;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;// Create directly first ...&lt;/span&gt;&lt;br /&gt;startTicks &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; DateTime.Now.Ticks;&lt;br /&gt;MyObject obj &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; CreateDirect();&lt;br /&gt;endTicks &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; DateTime.Now.Ticks;&lt;br /&gt;Console.WriteLine(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"Called direct. Ticks: {0}"&lt;/span&gt;, (endTicks-startTicks));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Green;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;// Create by activator ...&lt;/span&gt;&lt;br /&gt;startTicks &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; DateTime.Now.Ticks;&lt;br /&gt;obj &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; CreateByActivator();&lt;br /&gt;endTicks &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; DateTime.Now.Ticks;&lt;br /&gt;Console.WriteLine(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"Called by activator. Ticks: {0}"&lt;/span&gt;, (endTicks-startTicks));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Green;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;// Create by reflecting constructor ...&lt;/span&gt;&lt;br /&gt;startTicks &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; DateTime.Now.Ticks;&lt;br /&gt;obj &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; CreateByReflection();&lt;br /&gt;endTicks &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; DateTime.Now.Ticks;&lt;br /&gt;Console.WriteLine(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"Called by reflection. Ticks: {0}"&lt;/span&gt;, (endTicks-startTicks));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Console.ReadLine();&lt;br /&gt;}&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Όμορφα &lt;IMG class=wp-smiley alt=:) src="http://www.handmade.gr/angel/wp-images/smilies/icon_smile.gif"&gt; Αυτό είναι το&amp;nbsp; output στο μηχάνημά μου&amp;nbsp; (PIII 2.7Ghz, 1Gb RAM).&lt;/FONT&gt;&lt;/P&gt;&lt;PRE&gt;Called direct. Ticks: 0&lt;BR&gt;Called by activator. Ticks: 156258&lt;BR&gt;Called by reflection. Ticks: 0&lt;/PRE&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Εδώ φρίκαρα λίγο ... αν δεχτώ τα παραπάνω, κάθε φορά που χρησιμοποιώ τον Activator είμαι περίπου ... 156258 φορές πιο αργός απο ένα direct instatiation !!! Κι ακόμα .. αν χρησιμοποιήσω Reflection, είμαι ΕΞΙΣΟΥ γρήγορος με το direct instantiation !!?!?!?&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Ok .. μετά απο λίγη σκέψη, κατέληξα στο ότι η μέθοδός μου η οποία χρησιμοποιεί Reflection γλυτώνει ένα μεγάλο κόπο, να βρεί το Type απο ένα string, όπως κάνει ο Activator. Οπότε για να είμαι "τίμιος", άλλαξα τον κώδικά της σε:&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;static&lt;/span&gt; MyObject CreateByReflection2(){&lt;br /&gt;Type myType &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; Type.GetType(&lt;span style="color: #666666;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;"Tests.MyObject"&lt;/span&gt;);&lt;br /&gt;ConstructorInfo constr &lt;span style="color: Red;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; myType.GetConstructor(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; System.Type[0]);&lt;br /&gt;&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;return&lt;/span&gt; (MyObject) constr.Invoke(&lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Lucida Console;font-size: 11px;font-weight: normal;"&gt;object&lt;/span&gt;[0]);&lt;br /&gt;}&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Μετά απο μερικά trial runs, παρατήρησα ένα πολύ περίεργο φαινόμενο. Ο Activator κάθε τόσο επιστρέφει σε πάνω-κάτω 156280 ticks, αλά τις περισσότερες φορές μετα την πρώτη κλήση επιστρέφει σε 0 ticks. Επίσης, το Reflection επιστρέφει σε 0 πάντα.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Για να το ψάξω λίγο ακόμη περισσότερο, έβαλα τον κώδικα της Main σε μια άλλη μέθοδο, και στη Main κάνω ένα loop που την καλεί μερικές φορές, για να έχω ένα καλύτερο "δείγμα" απο trial runs. Παραθέτω ένα μικρό κομμάτι απ'το output (&lt;I&gt;το loop έκανε τουλάχιστον 100 φορές αυτήν την ιστορία&lt;/I&gt;) και παρατηρήστε το pattern του Activator. Αυτό επαναλαμβάνεται αρκετές φορές στο ολόκληρο output που πήρα.&lt;/P&gt;&lt;/FONT&gt;&lt;PRE&gt;Called direct. Ticks: 0&lt;BR&gt;Called by activator. Ticks: 156247&lt;BR&gt;&lt;/PRE&gt;&lt;PRE&gt;Called by reflection. Ticks: 0&lt;BR&gt;Called direct. Ticks: 0&lt;BR&gt;Called by activator. Ticks: 0&lt;BR&gt;Called by reflection. Ticks: 0&lt;BR&gt;Called direct. Ticks: 0&lt;BR&gt;Called by activator. Ticks: 0&lt;BR&gt;Called by reflection. Ticks: 0&lt;BR&gt;...&lt;BR&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Μετά την πρώτη κλήση, ο Activator επιστρέφει σε 0 ticks για κάποιο χρονικό διάστημα. Υποπτεύομαι οτι κάπως/κάπου cache-άρει τις πληροφορίες που χρειάζεται για το instantiation, και αρχίζει πάλι απ'την αρχή μετά απο λίγο, όταν αυτές οι πληροφορίες γίνονται dropped - αλλά αυτό είναι απλώς μια θεωρία μου και μάλιστα όχι και πολύ ... βάσιμη, γιατί ήταν πρωί όταν το σκεφτόμουν :D &lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Επίσης μυστήριο έχει και το Reflection που επιστρέφει σε 0 ticks. Ακόμη κι αν είναι τόσο γρήγορο έτσι βέβαια, χάνει σε ευελιξία λόγω του ότι δεν μπορώ (&lt;I&gt;ακόμα&lt;/I&gt;) να του πώ απο ποιό assembly να φορτώσει το αντικείμενο που θέλω. Σε αυτό το σημείο υστερεί απ'τον Activator, αλλά .. τι να κάνεις ... :)&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Σκέψεις και θεωρίες επι των παραπάνω, όπως πάντα πολύ ευπρόσδεκτες !&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Arial&gt;Πολύ καλή μέρα μας&lt;BR&gt;&lt;/FONT&gt;&lt;/P&gt;</description></item></channel></rss>