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