dotgnu-general
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[DotGNU]Fun with Portable.NET benchmarks


From: Rhys Weatherley
Subject: [DotGNU]Fun with Portable.NET benchmarks
Date: Mon, 03 Jun 2002 13:36:13 +1000

I've been spending the last 3 weeks optimising the CVM
interpreter in the runtime engine using a variety of
techniques.

DotGNU members may be interested in the following table
that charts my progress (all measurements done on an
866 MHz Pentium III):

--------------------------------------------------------
           11 May   13 May   24 May   1 June   3 June

Sieve       1103     1320     1434     1781     4760
Loop        1012     1097     1279     2073     13011
Logic       996      1945     2294     6979     7268
String      80       132      148      216      205
Float       34       50       54       60       60
Method      1088     1336     1519     3068     3573

PNetMark    385      540      609      1004     1644

11 May - switch loop using ilrun_opt (pnet 0.3.6)
13 May - token threaded interpreter
24 May - direct threaded interpreter
1 June - first cut of code unrolling
3 June - unroll object and array operations
--------------------------------------------------------

The "Loop" test makes heavy use of array operations,
which is why it had such a substantial jump when those
operations were unrolled.

The latest addition is code unrolling.  This uses a
"mini JIT" to convert a subset of the CVM instructions
into x86 machine code.  Not all instructions are
converted in this manner, so it isn't a "full JIT".

But as you can see, it does improve performance greatly
by flattening out the basic blocks in the code to reduce
the overhead of instruction dispatching.

Cheers,

Rhys.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]