Speed improvement using compile time generated proxies

"Johan Kirsten" <[email protected]> Wed, 3 Sep 2008 23:54:08 +0200
Newsgroups gmane.comp.windows.dotnet.nhibernate.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.

--===============0265174878==
Content-Type: multipart/alternative;
	boundary="----=_NextPart_000_0049_01C90E20.5B200FE0"

This is a multi-part message in MIME format.

------=_NextPart_000_0049_01C90E20.5B200FE0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

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=20
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   =20
      Type FK Run 1 Run 2 Run 3 Average=20
      1 0 203 203 187 198=20
      2 1 328 328 422 359=20
      3 2 406 407 562 458=20
      4 3 500 703 422 542=20
      5 3 547 484 578 536=20
         =20
      Compile time proxies    =20
      Type FK Run 1 Run 2 Run 3 Average=20
      1 0 188 218 172 193=20
      2 1 78 47 63 63=20
      3 2 62 78 78 73=20
      4 3 78 63 78 73=20
      5 3 78 94 125 99=20
         =20
      Difference     =20
      Type FK % reduction Calculation =20
      1 0 -3%  =3D (193 - 198)/198=20
      2 1 -83%  =3D (63 - 359)/359=20
      3 2 -84%  =3D (73 - 458)/458=20
      4 3 -87%  =3D (73 - 542)/542=20
      5 3 -82%  =3D (99 - 536)/536=20

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_0049_01C90E20.5B200FE0
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.6000.16705" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Greetings</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>There was a request for benchmark =
numbers regarding=20
the performance increase. I have performed my tests using the following=20
configuration:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Pentium 4 2.4 GHz<BR>1 GB RAM<BR>Win XP =
Pro SP=20
3<BR>VS 2005<BR>NET 2.0<BR>MS SQL Server 2000 <BR>Ran in debug =
mode<BR>The=20
nhibernate proxy generator by WC Pierce (<A=20
href=3D"http://code.google.com/p/nhibernateproxygenerator/">http://code.g=
oogle.com/p/nhibernateproxygenerator/</A>)<BR>NHibernate=20
2.0 (the nhibernate proxy generator requires NH 2.0 because it needs to =
set the=20
proxyfactoryfactory)</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I ran my tests by loading 5 different =
types from=20
the db. For each type I loaded the top 100 in the table.<BR>I documented =
the=20
times in milliseconds. The most important difference between each type =
is the=20
number of contained objects (and therefore foreign keys). I have also =
documented=20
this.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2><BR>
<TABLE style=3D"WIDTH: 288pt; BORDER-COLLAPSE: collapse" cellSpacing=3D0 =

cellPadding=3D0 width=3D384 border=3D0 x:str>
  <COLGROUP>
  <COL style=3D"WIDTH: 48pt" span=3D6 width=3D64>
  <TBODY>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; WIDTH: 144pt; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; =
BACKGROUND-COLOR: transparent; mso-ignore: colspan"=20
    width=3D192 colSpan=3D3 height=3D17><FONT size=3D2>Using run time=20
proxies</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: =
transparent"=20
    width=3D64><FONT size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: =
transparent"=20
    width=3D64><FONT size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; WIDTH: 48pt; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: =
transparent"=20
    width=3D64><FONT size=3D2></FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17><FONT size=3D2>Type</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>FK</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>Run 1</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>Run 2</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>Run 3</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>Average</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>1</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>0</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>203</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>203</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>187</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>198</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>2</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>1</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>328</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>328</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>422</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>359</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>3</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>2</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>406</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>407</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>562</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>458</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>4</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>3</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>500</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>703</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>422</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>542</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>5</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>3</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>547</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>484</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>578</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>536</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17><FONT size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent; mso-ignore: colspan"=20
    colSpan=3D2 height=3D17><FONT size=3D2>Compile time =
proxies</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17><FONT size=3D2>Type</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>FK</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>Run 1</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>Run 2</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>Run 3</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>Average</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>1</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>0</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>188</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>218</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>172</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>193</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>2</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>1</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>78</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>47</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>63</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>63</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>3</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>2</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>62</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>78</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>78</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>73</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>4</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>3</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>78</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>63</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>78</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>73</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>5</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>3</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>78</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>94</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>125</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>99</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17><FONT size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17><FONT size=3D2>Difference</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17><FONT size=3D2>Type</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>FK</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2>% reduction</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent; =
mso-ignore: colspan"=20
    colSpan=3D2><FONT size=3D2>Calculation</FONT></TD>
    <TD=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>1</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>0</FONT></TD>
    <TD class=3Dxl25=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num=3D"-0.03"><FONT size=3D2>-3%</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD class=3Dxl26=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent; =
mso-ignore: colspan"=20
    colSpan=3D2 x:str=3D"'=3D (193 - 198)/198"><FONT size=3D2>=3D (193 - =

    198)/198</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>2</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>1</FONT></TD>
    <TD class=3Dxl25=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num=3D"-0.83"><FONT size=3D2>-83%</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD class=3Dxl26=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent; =
mso-ignore: colspan"=20
    colSpan=3D2 x:str=3D"'=3D (63 - 359)/359"><FONT size=3D2>=3D (63 -=20
  359)/359</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>3</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>2</FONT></TD>
    <TD class=3Dxl25=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num=3D"-0.84"><FONT size=3D2>-84%</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD class=3Dxl26=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent; =
mso-ignore: colspan"=20
    colSpan=3D2 x:str=3D"'=3D (73 - 458)/458"><FONT size=3D2>=3D (73 -=20
  458)/458</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>4</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>3</FONT></TD>
    <TD class=3Dxl25=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num=3D"-0.87"><FONT size=3D2>-87%</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD class=3Dxl26=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent; =
mso-ignore: colspan"=20
    colSpan=3D2 x:str=3D"'=3D (73 - 542)/542"><FONT size=3D2>=3D (73 -=20
  542)/542</FONT></TD></TR>
  <TR style=3D"HEIGHT: 12.75pt" height=3D17>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; HEIGHT: 12.75pt; BACKGROUND-COLOR: =
transparent"=20
    height=3D17 x:num><FONT size=3D2>5</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num><FONT size=3D2>3</FONT></TD>
    <TD class=3Dxl25=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"=20
    x:num=3D"-0.82"><FONT size=3D2>-82%</FONT></TD>
    <TD class=3Dxl24=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent"><FONT=20
      size=3D2></FONT></TD>
    <TD class=3Dxl26=20
    style=3D"BORDER-RIGHT: #e0dfe3; BORDER-TOP: #e0dfe3; BORDER-LEFT: =
#e0dfe3; BORDER-BOTTOM: #e0dfe3; BACKGROUND-COLOR: transparent; =
mso-ignore: colspan"=20
    colSpan=3D2 x:str=3D"'=3D (99 - 536)/536"><FONT size=3D2>=3D (99 -=20
  536)/536</FONT></TD></TR></TBODY></TABLE><BR></FONT><FONT face=3DArial =
size=3D2>For=20
classes with contained objects (fk's) a reduction in process time of =
approx=20
80%<BR>e.g. a load time of 5 seconds can be reduced to 1 second for a =
list of=20
complex objects<BR>No significant improvement in classes without =
contained=20
objects (fk's)</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>It is also important to realise that =
these are=20
speed improvements on NH 2.0. I suspect that the new Dynamic Proxy used =
by NH=20
2.0 also has its own optimization. Therefore if you are coming from NH =
1.2.1 I=20
suspect you will get an even greater improvement, but this is not=20
confirmed</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Johan =
Kirsten</FONT></DIV></BODY></HTML>

------=_NextPart_000_0049_01C90E20.5B200FE0--




--===============0265174878==
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=/
--===============0265174878==
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

--===============0265174878==--