Re: Speed improvement using compile time generated proxies
"Andrew Mayorov" <[email protected]> Thu, 4 Sep 2008 11:39:24 +0400
| Newsgroups | gmane.comp.windows.dotnet.nhibernate.devel |
|---|---|
| Message-ID | <037101c90e61$5dae9970$190bcc50$@com> |
Ýòî ñîñòàâíîå ñîîáùåíèå â ôîðìàòå MIME. --===============0998835977== Content-Type: multipart/alternative; boundary="----=_NextPart_000_0372_01C90E82.E4C03970" Content-Language: ru Ýòî ñîñòàâíîå ñîîáùåíèå â ôîðìàòå MIME. ------=_NextPart_000_0372_01C90E82.E4C03970 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi! Guys, can anyone explain why precompiled proxy could be faster than runtime generated in real application? Proxy generation should be one time operation for each type, and as soon as we've made a proxy for particular type there should be no difference in method of its creation. Yes, first query with precompiled proxy would execute faster, but all subsequent should have the same speed. Best, Andrew From: [email protected] [mailto:[email protected]] On Behalf Of Johan Kirsten Sent: Thursday, September 04, 2008 1:54 AM To: [email protected] Subject: [NHibernate-development] Speed improvement using compile time generated proxies Greetings There was a request for benchmark numbers regarding the performance increase. I have performed my tests using the following configuration: Pentium 4 2.4 GHz 1 GB RAM Win XP Pro SP 3 VS 2005 NET 2.0 MS SQL Server 2000 Ran in debug mode The nhibernate proxy generator by WC Pierce (http://code.google.com/p/nhibernateproxygenerator/) NHibernate 2.0 (the nhibernate proxy generator requires NH 2.0 because it needs to set the proxyfactoryfactory) I ran my tests by loading 5 different types from the db. For each type I loaded the top 100 in the table. I documented the times in milliseconds. The most important difference between each type is the number of contained objects (and therefore foreign keys). I have also documented this. Using run time proxies Type FK Run 1 Run 2 Run 3 Average 1 0 203 203 187 198 2 1 328 328 422 359 3 2 406 407 562 458 4 3 500 703 422 542 5 3 547 484 578 536 Compile time proxies Type FK Run 1 Run 2 Run 3 Average 1 0 188 218 172 193 2 1 78 47 63 63 3 2 62 78 78 73 4 3 78 63 78 73 5 3 78 94 125 99 Difference Type FK % reduction Calculation 1 0 -3% = (193 - 198)/198 2 1 -83% = (63 - 359)/359 3 2 -84% = (73 - 458)/458 4 3 -87% = (73 - 542)/542 5 3 -82% = (99 - 536)/536 For classes with contained objects (fk's) a reduction in process time of approx 80% e.g. a load time of 5 seconds can be reduced to 1 second for a list of complex objects No significant improvement in classes without contained objects (fk's) It is also important to realise that these are speed improvements on NH 2.0. I suspect that the new Dynamic Proxy used by NH 2.0 also has its own optimization. Therefore if you are coming from NH 1.2.1 I suspect you will get an even greater improvement, but this is not confirmed Johan Kirsten ------=_NextPart_000_0372_01C90E82.E4C03970 Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable <html xmlns:v=3D"urn:schemas-microsoft-com:vml" = xmlns:o=3D"urn:schemas-microsoft-com:office:office" = xmlns:w=3D"urn:schemas-microsoft-com:office:word" = xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" = xmlns=3D"http://www.w3.org/TR/REC-html40"> <head> <META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; = charset=3Dus-ascii"> <meta name=3DGenerator content=3D"Microsoft Word 12 (filtered medium)"> <style> <!-- /* Font Definitions */ @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4;} @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm; margin-bottom:.0001pt; font-size:12.0pt; font-family:"Times New Roman","serif";} a:link, span.MsoHyperlink {mso-style-priority:99; color:blue; text-decoration:underline;} a:visited, span.MsoHyperlinkFollowed {mso-style-priority:99; color:purple; text-decoration:underline;} span.EmailStyle17 {mso-style-type:personal-reply; font-family:"Calibri","sans-serif"; color:#1F497D;} .MsoChpDefault {mso-style-type:export-only; font-size:10.0pt;} @page Section1 {size:612.0pt 792.0pt; margin:2.0cm 42.5pt 2.0cm 3.0cm;} div.Section1 {page:Section1;} --> </style> <!--[if gte mso 9]><xml> <o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" /> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext=3D"edit"> <o:idmap v:ext=3D"edit" data=3D"1" /> </o:shapelayout></xml><![endif]--> </head> <body bgcolor=3Dwhite lang=3DRU link=3Dblue vlink=3Dpurple> <div class=3DSection1> <p class=3DMsoNormal><span lang=3DEN-US = style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"; color:#1F497D'>Hi!<o:p></o:p></span></p> <p class=3DMsoNormal><span lang=3DEN-US = style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"; color:#1F497D'><o:p> </o:p></span></p> <p class=3DMsoNormal><span lang=3DEN-US = style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"; color:#1F497D'>Guys, can anyone explain why precompiled proxy could be = faster than runtime generated in real application? Proxy generation should be = one time operation for each type, and as soon as we’ve made a proxy for = particular type there should be no difference in method of its creation. Yes, first = query with precompiled proxy would execute faster, but all subsequent should have the same = speed. <o:p></o:p></span></p> <p class=3DMsoNormal><span lang=3DEN-US = style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"; color:#1F497D'><o:p> </o:p></span></p> <p class=3DMsoNormal><span lang=3DEN-US = style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"; color:#1F497D'>Best,<o:p></o:p></span></p> <p class=3DMsoNormal><span lang=3DEN-US = style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"; color:#1F497D'>Andrew<o:p></o:p></span></p> <p class=3DMsoNormal><span lang=3DEN-US = style=3D'font-size:11.0pt;font-family:"Calibri","sans-serif"; color:#1F497D'><o:p> </o:p></span></p> <div style=3D'border:none;border-left:solid blue 1.5pt;padding:0cm 0cm = 0cm 4.0pt'> <div> <div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt = 0cm 0cm 0cm'> <p class=3DMsoNormal><b><span = style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span>= </b><span style=3D'font-size:10.0pt;font-family:"Tahoma","sans-serif"'> = [email protected] [mailto:[email protected]] <b>On = Behalf Of </b>Johan Kirsten<br> <b>Sent:</b> Thursday, September 04, 2008 1:54 AM<br> <b>To:</b> [email protected]<br> <b>Subject:</b> [NHibernate-development] Speed improvement using compile = time generated proxies<o:p></o:p></span></p> </div> </div> <p class=3DMsoNormal><o:p> </o:p></p> <div> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt;font-family:"Arial","sans-serif"'>Greetings</sp= an><o:p></o:p></p> </div> <div> <p class=3DMsoNormal> <o:p></o:p></p> </div> <div> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt;font-family:"Arial","sans-serif"'>There was a request for benchmark numbers regarding the performance increase. = I have performed my tests using the following = configuration:</span><o:p></o:p></p> </div> <div> <p class=3DMsoNormal> <o:p></o:p></p> </div> <div> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt;font-family:"Arial","sans-serif"'>Pentium 4 2.4 GHz<br> 1 GB RAM<br> Win XP Pro SP 3<br> VS 2005<br> NET 2.0<br> MS SQL Server 2000 <br> Ran in debug mode<br> The nhibernate proxy generator by WC Pierce (<a href=3D"http://code.google.com/p/nhibernateproxygenerator/">http://code.g= oogle.com/p/nhibernateproxygenerator/</a>)<br> NHibernate 2.0 (the nhibernate proxy generator requires NH 2.0 because = it needs to set the proxyfactoryfactory)</span><o:p></o:p></p> </div> <div> <p class=3DMsoNormal> <o:p></o:p></p> </div> <div> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt;font-family:"Arial","sans-serif"'>I ran my tests by loading 5 different types from the db. For each type I = loaded the top 100 in the table.<br> I documented the times in milliseconds. The most important difference = between each type is the number of contained objects (and therefore foreign = keys). I have also documented this.</span><o:p></o:p></p> </div> <div> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt;font-family:"Arial","sans-serif"'><o:p> </= o:p></span></p> <table class=3DMsoNormalTable border=3D0 cellspacing=3D0 cellpadding=3D0 = width=3D384 style=3D'width:288.0pt;border-collapse:collapse'> <tr style=3D'height:12.75pt'> <td width=3D192 colspan=3D3 style=3D'width:144.0pt;padding:0cm 0cm 0cm = 0cm; height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>Using run time = proxies</span><o:p></o:p></p> </td> <td width=3D64 style=3D'width:48.0pt;padding:0cm 0cm 0cm = 0cm;height:12.75pt'></td> <td width=3D64 style=3D'width:48.0pt;padding:0cm 0cm 0cm = 0cm;height:12.75pt'></td> <td width=3D64 style=3D'width:48.0pt;padding:0cm 0cm 0cm = 0cm;height:12.75pt'></td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>Type</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>FK</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>Run = 1</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>Run = 2</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>Run = 3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>Average</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>1</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>0</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>203</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>203</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>187</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>198</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>2</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>1</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>328</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>328</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>422</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>359</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>2</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>406</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>407</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>562</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>458</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>4</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>500</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>703</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>422</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>542</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>5</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>547</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>484</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>578</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>536</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> </tr> <tr style=3D'height:12.75pt'> <td colspan=3D2 style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>Compile time = proxies</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>Type</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>FK</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>Run = 1</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>Run = 2</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>Run = 3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>Average</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>1</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>0</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>188</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>218</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>172</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>193</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>2</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>1</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>78</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>47</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>63</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>63</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>2</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>62</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>78</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>78</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>73</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>4</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>78</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>63</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>78</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>73</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>5</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>78</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>94</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>125</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>99</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>Difference</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>Type</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>FK</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>% = reduction</span><o:p></o:p></p> </td> <td colspan=3D2 style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>Calculation</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>1</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>0</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>-3%</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td colspan=3D2 style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>=3D (193 - = 198)/198</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>2</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>1</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>-83%</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td colspan=3D2 style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>=3D (63 - = 359)/359</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>2</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>-84%</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td colspan=3D2 style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>=3D (73 - = 458)/458</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>4</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>-87%</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td colspan=3D2 style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>=3D (73 - = 542)/542</span><o:p></o:p></p> </td> </tr> <tr style=3D'height:12.75pt'> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>5</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>3</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt'>-82%</span><o:p></o:p></p> </td> <td style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'></td> <td colspan=3D2 style=3D'padding:0cm 0cm 0cm 0cm;height:12.75pt'> <p class=3DMsoNormal><span style=3D'font-size:10.0pt'>=3D (99 - = 536)/536</span><o:p></o:p></p> </td> </tr> </table> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt;font-family:"Arial","sans-serif"'><br> For classes with contained objects (fk's) a reduction in process time of = approx 80%<br> e.g. a load time of 5 seconds can be reduced to 1 second for a list of = complex objects<br> No significant improvement in classes without contained objects = (fk's)</span><o:p></o:p></p> </div> <div> <p class=3DMsoNormal> <o:p></o:p></p> </div> <div> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt;font-family:"Arial","sans-serif"'>It is also important to realise that these are speed improvements on NH = 2.0. I suspect that the new Dynamic Proxy used by NH 2.0 also has its own optimization. Therefore if you are coming from NH 1.2.1 I suspect you = will get an even greater improvement, but this is not = confirmed</span><o:p></o:p></p> </div> <div> <p class=3DMsoNormal> <o:p></o:p></p> </div> <div> <p class=3DMsoNormal><span = style=3D'font-size:10.0pt;font-family:"Arial","sans-serif"'>Johan Kirsten</span><o:p></o:p></p> </div> </div> </div> </body> </html> ------=_NextPart_000_0372_01C90E82.E4C03970-- --===============0998835977== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ --===============0998835977== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Nhibernate-development mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/nhibernate-development --===============0998835977==--