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>&nbsp;</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&#8217;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>&nbsp;</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>&nbsp;</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>&nbsp;</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>&nbsp;<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>&nbsp;<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>&nbsp;<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>&nbsp;</=
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>&nbsp;<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>&nbsp;<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==--