Re: [Mono-list] Re: The Mauve unicode testcase and VM performance

2004-04-15 Thread Jonathan Pryor
Below...

On Wed, 2004-04-14 at 10:30, Anthony Green wrote:
 On Tue, 2004-04-13 at 15:08, Jonathan Pryor wrote:
  AOT (or pre-JITing) assemblies is not as useful as you'd think.  It has
  two primary effects:
  
- Reduce memory requirements, as memory doesn't need to be allocated
  for the JITed code
- Decrease startup time, as (again) the JITing doesn't need to be 
  done.
 
 Are you saying that mono doesn't have the ability to create shared
 libraries?

How did you get that interpretation from my statements?  It boggles my
mind...

Mono AOT creates shared libraries.  That's how startup time is reduced
-- the shared libraries contain the AOT code, so the code doesn't need
to be JITted.

 - Jon




___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: [Mono-list] Re: The Mauve unicode testcase and VM performance

2004-04-15 Thread Ben Maurer
No, he is not.

YOu can run

mono -O=shared my.exe

or, if you would like to aot:
mono -O=shared --aot my.exe

However, as miguel stated earlier, the need for shared code is very
rare. What shared means here is that the same code can be used by
multiple appdomains (look that up if you are not familar with the .NET
appdomain system). The use of this functionality is pretty rare, the
only example I can think of is ASP.net.

-- Ben

 Anthony Green [EMAIL PROTECTED] 04/15/04 04:21 AM 
On Tue, 2004-04-13 at 15:08, Jonathan Pryor wrote:
 AOT (or pre-JITing) assemblies is not as useful as you'd think.  It
has
 two primary effects:
 
   - Reduce memory requirements, as memory doesn't need to be allocated
 for the JITed code
   - Decrease startup time, as (again) the JITing doesn't need to be 
 done.

Are you saying that mono doesn't have the ability to create shared
libraries?

AG

-- 
Anthony Green [EMAIL PROTECTED]
Red Hat, Inc.

___
Mono-list maillist  -  [EMAIL PROTECTED]
http://lists.ximian.com/mailman/listinfo/mono-list



___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: [Mono-list] Re: The Mauve unicode testcase and VM performance

2004-04-15 Thread Anthony Green
On Wed, 2004-04-14 at 19:47, Jonathan Pryor wrote:
 Below...
 
 On Wed, 2004-04-14 at 10:30, Anthony Green wrote:
  On Tue, 2004-04-13 at 15:08, Jonathan Pryor wrote:
   AOT (or pre-JITing) assemblies is not as useful as you'd think.  It has
   two primary effects:
   
 - Reduce memory requirements, as memory doesn't need to be allocated
   for the JITed code
 - Decrease startup time, as (again) the JITing doesn't need to be 
   done.
  
  Are you saying that mono doesn't have the ability to create shared
  libraries?
 
 How did you get that interpretation from my statements?  It boggles my
 mind...

Because you didn't mention the key advantage that you get from
AOT-compiled shared libraries: saving memory from sharing library code
between processes.  You're only two points were about saving time and
memory from not having to JIT compile code.

AG

-- 
Anthony Green [EMAIL PROTECTED]
Red Hat, Inc.



___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: [Mono-list] Re: The Mauve unicode testcase and VM performance

2004-04-15 Thread Miguel de Icaza
Hello,

 Because you didn't mention the key advantage that you get from
 AOT-compiled shared libraries: saving memory from sharing library code
 between processes.  You're only two points were about saving time and
 memory from not having to JIT compile code.

Ah, that is correct, and I had at least completely ignored that fact. 

Using --aot will indeed use shared mapping between various Mono
processes, so it is an extra advantage.

Miguel


___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: The Mauve unicode testcase and VM performance

2004-04-14 Thread David P Grove

Sigh.

Building
a development version of Jikes RVM is pretty stressful on the hosting VM.
It's found bugs in more than one product VM in the past. This
looks like one of the nastier forms; the host VM managed to write the RVM.image
file without any obvious error, but the image file is slightly wrong with
the result being that Jikes RVM crashes some of the time when you try to
run it. I know Steve Augart was looking into a similar failure last
week, but it's often a long and painful process unless one can get lucky
(especially as building the development image on kaffe is _slow_ so the
turnaround time for each injecting of debugging code is a couple of hours).

I'm
sure this will work eventually, but maybe stick with prototype versions
of Jikes RVM for now. 

--dave


Created a development build and tried it. But...

$ time echo gnu.testlet.java.lang.Character.unicode | ~/src/rvm/bin/rvm
gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
OPT_Compiler failure during compilation of gnu.testlet.java.lang.Character.UnicodeBase.getNext
(Ljava/io/Reader;)Ljava/lang/String;
Ljava/lang/ClassCastException;
VM_StackTrace.print(): *UNEXPECTED* Throwable while displaying stack trace
# 24
  The Throwable was: Ljava/lang/NullPointerException;
VM_StackTrace.print(): And its stack trace was:
Ljava/lang/NullPointerException;___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: [Mono-list] Re: The Mauve unicode testcase and VM performance

2004-04-14 Thread Anthony Green
On Tue, 2004-04-13 at 15:08, Jonathan Pryor wrote:
 AOT (or pre-JITing) assemblies is not as useful as you'd think.  It has
 two primary effects:
 
   - Reduce memory requirements, as memory doesn't need to be allocated
 for the JITed code
   - Decrease startup time, as (again) the JITing doesn't need to be 
 done.

Are you saying that mono doesn't have the ability to create shared
libraries?

AG

-- 
Anthony Green [EMAIL PROTECTED]
Red Hat, Inc.



___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: [Mono-list] Re: The Mauve unicode testcase and VM performance

2004-04-14 Thread Miguel de Icaza
Hello,

 snip/
  Interestingly, my installation of mono (from debian sid) doesn't even 
  come with its own libraries AOT'd. I'd have thought that you'd get the 
  best performance by AOT'ing *all* the libraries, including (and 
  especially) the low-level platform ones such as System.dll and 
  System.Xml.dll.
 
 AOT (or pre-JITing) assemblies is not as useful as you'd think.  It has
 two primary effects:
 
   - Reduce memory requirements, as memory doesn't need to be allocated
 for the JITed code
   - Decrease startup time, as (again) the JITing doesn't need to be 
 done.

Another effect is that you can run the most time consuming
optimizations on those assemblies.   For example, using AOT with -O=all
on mcs.exe gives about 15% performance increase:

mono --aot -O=all /usr/bin/mcs.exe

If you also apply this to mscorlib and System, you get another 7-12%.  
Useful when you are doing a lot of compilations.

Miguel


___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


RE: The Mauve unicode testcase and VM performance

2004-04-13 Thread Jeroen Frijters
Stuart Ballard wrote:
 Mark Wielaard wrote:
  and overhead. Hope I have time next week to update it with 
 at least rvm
  development results and maybe IKVM ahead of time results 
 (Jeroen, any
  hints on how to do that in this case?)
 
 I don't know whether you have a zip/jar or individual classfiles but 
 assuming it's a single jar file, presumably it would be (commands 
 separated by blank lines - ignore any mailer-induced wordwrapping):
 
 mono ikvmc.exe -target:exe -out:mauve.exe -reference:classpath.dll 
 -main:gnu.testlet.SimpleTestHarness mauve.jar

This is what I did:
#cd mauve
#mono ../ikvm/bin/ikvmc.exe -out:mauve.exe
-main:gnu.testlet.SimpleTestHarness `find | grep -v altered | grep
.*class$` -reference:../ikvm/bin/classpath.dll
#cp ../ikvm/bin/*.dll .
#time echo gnu.testlet.java.lang.Character.unicode | mono mauve.exe
-debug
Reading unicode database...
done
Benchmark : load:2151ms   tests:328ms
0 of 3578944 tests failed

real0m2.979s
user0m0.030s
sys 0m0.050s

On Windows I got:
C:\mauveecho gnu.testlet.java.lang.Character.unicode| mono mauve.exe
-debug
Reading unicode database...
done
Benchmark : load:1763ms   tests:731ms
0 of 3578944 tests failed

C:\mauveecho gnu.testlet.java.lang.Character.unicode| mauve.exe -debug
Reading unicode database...
done
Benchmark : load:180ms   tests:170ms
0 of 3578944 tests failed

C:\mauveecho gnu.testlet.java.lang.Character.unicode| ikvm
gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:180ms   tests:170ms
0 of 3578944 tests failed

So for the run time it doesn't make any difference if it is precompiled
or not, total time is a bit longer though (about 1.5 second versus 1.0
seconds).

Note also that IKVM running on the Microsoft framework is faster than
Hotspot (but overall elapsed time for Hotspot is less, about 0.7
seconds):
C:\mauveecho gnu.testlet.java.lang.Character.unicode|
\j2re1.4.1\bin\java gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:220ms   tests:250ms
0 of 3578944 tests failed

All tests are on a 1.7 GHz Pentium M, the Linux test was running in a
VMWare session.

 The other thing to try would be using Mono's --aot option 
 to pre-JIT (as it were) the generated exe and dlls.

I couldn't get that to work.

Regards,
Jeroen


___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: The Mauve unicode testcase and VM performance

2004-04-13 Thread Stuart Ballard
Mark Wielaard wrote:
You then still need the original exe for execution.
The man page says about --aot:
This  option is used to precompile the CIL code in the specified
assembly to native code.  The generated code is stored in a file
with  the extension .so.  This file will be automatically picked
up by the runtime when the assembly is executed.
	This pre-compiles the methods,  but  the  original  assembly  is
	still  required to execute as this one contains the metadata and
	exception information which is not  availble  on  the  generated
	file.   When  precompiling  code, you might want to compile with
	all optimizations (-O=all).  Pre-compiled code is position inde-
	pendent code.

 load  test  overhead  total
Old: 1703  1292  3174  6169
New: 2944  1337   624  4905
Oat: 2944  1312   626  4882

So that doesn't seem to help in this case (or I did something wrong and
it isn't picking up the mauve.exe.so after all).
Did you try --aot'ing classpath.dll, IK.VM.NET.dll etc?

I'd imagine that this particular microbenchmark spends a large 
proportion of its time inside classpath itself, suggesting that merely 
JITing the mauve part wouldn't help much.

The man page you cited says that --aot precompiles the CIL code in the 
specified assembly. In .NET terminology, each dll or exe is a separate 
assembly. So I take that doc to imply that you need to separately AOT 
each dll as well as the exe itself.

Interestingly, my installation of mono (from debian sid) doesn't even 
come with its own libraries AOT'd. I'd have thought that you'd get the 
best performance by AOT'ing *all* the libraries, including (and 
especially) the low-level platform ones such as System.dll and 
System.Xml.dll.

CC'ing mono-list for any insight they might have into why (or why not) 
you might want to AOT the platform libraries...

Stuart.

--
Stuart Ballard, Senior Web Developer
NetReach, Inc.
(215) 283-2300, ext. 126
http://www.netreach.com/


___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: The Mauve unicode testcase and VM performance

2004-04-13 Thread Mark Wielaard
Hi,

On Tue, 2004-04-13 at 20:55, Stuart Ballard wrote:
 Did you try --aot'ing classpath.dll, IK.VM.NET.dll etc?
 
 I'd imagine that this particular microbenchmark spends a large 
 proportion of its time inside classpath itself, suggesting that merely 
 JITing the mauve part wouldn't help much.

Should have thought about that.
Just tried it, but:

$ for i in *.dll; do mono --aot -O=all $i; done
Mono Ahead of Time compiler - compiling assembly OpenSystem.Java.dll
Executing the native assembler: as /tmp/mono_aot_ZNn0Pd -o /tmp/mono_aot_ZNn0Pd.o
Executing the native linker: ld -shared -o OpenSystem.Java.dll.so 
/tmp/mono_aot_ZNn0Pd.o
Compiled 12 out of 12 methods (100%)
0 methods contain absolute addresses (0%)
0 methods contain wrapper references (0%)
0 methods contain lmf pointers (0%)
0 methods have other problems (0%)
AOT RESULT 0
Mono Ahead of Time compiler - compiling assembly SharpZipLib.dll
Executing the native assembler: as /tmp/mono_aot_SVrc0t -o /tmp/mono_aot_SVrc0t.o
Executing the native linker: ld -shared -o SharpZipLib.dll.so /tmp/mono_aot_SVrc0t.o
Compiled 508 out of 540 methods (94%)
31 methods contain absolute addresses (5%)
1 methods contain wrapper references (0%)
0 methods contain lmf pointers (0%)
0 methods have other problems (0%)
AOT RESULT 0
Mono Ahead of Time compiler - compiling assembly awt.dll
Executing the native assembler: as /tmp/mono_aot_DbmJ3s -o /tmp/mono_aot_DbmJ3s.o
Executing the native linker: ld -shared -o awt.dll.so /tmp/mono_aot_DbmJ3s.o
Compiled 320 out of 342 methods (93%)
0 methods contain absolute addresses (0%)
22 methods contain wrapper references (6%)
0 methods contain lmf pointers (0%)
0 methods have other problems (0%)
AOT RESULT 0
Mono Ahead of Time compiler - compiling assembly classpath.dll
Executing the native assembler: as /tmp/mono_aot_NrbGZa -o /tmp/mono_aot_NrbGZa.o
Executing the native linker: ld -shared -o classpath.dll.so /tmp/mono_aot_NrbGZa.o
Compiled 18338 out of 18766 methods (97%)
0 methods contain absolute addresses (0%)
428 methods contain wrapper references (2%)
0 methods contain lmf pointers (0%)
0 methods have other problems (0%)
AOT RESULT 0
Mono Ahead of Time compiler - compiling assembly ik.vm.jni.dll
 
** ERROR **: file object.c: line 466 (mono_class_vtable): assertion failed: 
(fklass-byval_arg.type == MONO_TYPE_PTR)
aborting...
Aborted
Mono Ahead of Time compiler - compiling assembly ik.vm.net.dll
Executing the native assembler: as /tmp/mono_aot_PGuh22 -o /tmp/mono_aot_PGuh22.o
Executing the native linker: ld -shared -o ik.vm.net.dll.so /tmp/mono_aot_PGuh22.o
Compiled 1067 out of 1092 methods (97%)
0 methods contain absolute addresses (0%)
25 methods contain wrapper references (2%)
0 methods contain lmf pointers (0%)
0 methods have other problems (0%)
AOT RESULT 0
[EMAIL PROTECTED]:~/src/mauve]
$ time echo gnu.testlet.java.lang.Character.unicode | mono mauve.exe -debug
 
Unhandled Exception: System.TypeInitializationException: An exception was thrown by 
the type initializer for java.io.File --- System.TypeInitializationException: An 
exception was thrown by the type initializer for java.lang.System --- 
System.TypeInitializationException: An exception was thrown by the type initializer 
for gnu.java.io.EncodingManager --- System.TypeInitializationException: An exception 
was thrown by the type initializer for java.lang.Class --- 
System.ArrayTypeMismatchException: Source array type cannot be assigned to destination 
array type.
in 0x000dc MethodDescriptor:FromMethodBase (System.Reflection.MethodBase)
in 0x00011 CompiledTypeWrapper:CreateMethodWrapper (System.Reflection.MethodBase)
in 0x000c9 CompiledTypeWrapper:LazyPublishMembers ()
in 0x00041 LazyTypeWrapper:Finish ()
in 0x0004d NativeCode.java.lang.VMClass:CreateClassInstance (TypeWrapper)
in 0x00063 NativeCode.java.lang.VMClass:getClassFromWrapper (TypeWrapper)
in 0x00022 NativeCode.java.lang.VMClass:getClassFromType (System.Type)
in 0x00025 java.lang.Object:instancehelper_getClass (object)
in 0x000cd java.security.Permissions:add (java.security.Permission)
in 0x00055 java.lang.Class:.cctor ()
--- End of inner exception stack trace ---
 
in 0x00429 gnu.java.io.EncodingManager:.cctor ()
--- End of inner exception stack trace ---
 
in (unmanaged) gnu.java.io.EncodingManager:getEncoder (java.io.OutputStream)
in 0x0003a java.io.OutputStreamWriter:.ctor (java.io.OutputStream)
in 0x0003c java.io.PrintWriter:.ctor (java.io.OutputStream)
in 0x00019 java.io.PrintWriter:.ctor (java.io.OutputStream,bool)
in 0x00073 java.io.PrintStream:.ctor (java.io.OutputStream,bool)
in 0x0006d java.lang.VMSystem:makeStandardOutputStream ()
in 0x00899 java.lang.System:.cctor ()
--- End of inner exception stack trace ---
 
in (unmanaged) java.lang.System:getProperty (string)
in 0x00010 java.io.File:.cctor ()
--- End of inner exception stack trace ---
 
in (unmanaged) java.io.File:.ctor (string)
in 0x0003e java.io.FileReader:.ctor (string)
in 0x000bf gnu.testlet.SimpleTestHarness:.ctor (bool,bool,bool)
in 

Re: The Mauve unicode testcase and VM performance

2004-04-13 Thread Mark Wielaard
Hi,

On Mon, 2004-04-12 at 16:43, David P Grove wrote:
 Development Jikes RVM can take a while to build, but does buy some
 performance.  Probably not worth it for classpath development or mauve
 tests, but if you want to run some apps it can pay off.   I have
 prototype and development 2.3.2 images sitting around on my machine,
 so just for fun. 

Created a development build and tried it. But...

$ time echo gnu.testlet.java.lang.Character.unicode | ~/src/rvm/bin/rvm 
gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
OPT_Compiler failure during compilation of 
gnu.testlet.java.lang.Character.UnicodeBase.getNext 
(Ljava/io/Reader;)Ljava/lang/String;
Ljava/lang/ClassCastException;
VM_StackTrace.print(): *UNEXPECTED* Throwable while displaying stack trace # 24
The Throwable was: Ljava/lang/NullPointerException;
VM_StackTrace.print(): And its stack trace was:
Ljava/lang/NullPointerException;
VM_StackTrace.print(): *UNEXPECTED* Throwable while displaying stack trace # 26
The Throwable was: Ljava/lang/NullPointerException;
VM_StackTrace.print(): And its stack trace was:
Ljava/lang/NullPointerException;
VM_StackTrace.print(): *UNEXPECTED* Throwable while displaying stack trace # 27
The Throwable was: Ljava/lang/NullPointerException;
VM_StackTrace.print(): And its stack trace was:
We got 7 deep in printing stack traces; trouble.  Aborting.
JikesRVM: exit 99

This is a development build bootstrap with a prototype build which was
build with kaffe 1.1.4 though. Some other mauve tests do run with it.
Will post a bigger report to jikesrvnm-core later.

Cheers,

Mark


signature.asc
Description: This is a digitally signed message part
___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: [Mono-list] Re: The Mauve unicode testcase and VM performance

2004-04-13 Thread Jonathan Pryor
Below...

On Tue, 2004-04-13 at 14:55, Stuart Ballard wrote:
snip/
 Interestingly, my installation of mono (from debian sid) doesn't even 
 come with its own libraries AOT'd. I'd have thought that you'd get the 
 best performance by AOT'ing *all* the libraries, including (and 
 especially) the low-level platform ones such as System.dll and 
 System.Xml.dll.

AOT (or pre-JITing) assemblies is not as useful as you'd think.  It has
two primary effects:

  - Reduce memory requirements, as memory doesn't need to be allocated
for the JITed code
  - Decrease startup time, as (again) the JITing doesn't need to be 
done.

This isn't without consequence.  Here are some highlights, but see Chris
Brumme's blog[1] for *lots* of details:

  - Fewer opportunities to inline during the JIT, as many methods you'd 
like to inline will already have been compiled.
  - The real killer: AOT/pre-JIT code is AppDomain-neutral
- Builds on the above inlining issue
- Slows down access to class statics fields, as you need to go 
  through an indirection (for AppDomain lookup)
- The JIT can't emit a direct function call to AOT code

You should (obviously) always run a performance analysis to see what the
impacts of AOT/pre-JIT are, but the general consensus from the .NET
developers is that it should be avoided unless you really can't afford
the startup penalty or the memory requirements.

Personally, I haven't had any problems with startup time under Mono, so
I don't see the point in shipping AOT-compiled assemblies.

 - Jon

[1] http://blogs.msdn.com/cbrumme/




___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: The Mauve unicode testcase and VM performance

2004-04-12 Thread Mark Wielaard
Hi,

On Thu, 2004-04-08 at 18:44, Stephen Crawley wrote:
 The testcase now runs clean for JDK 1.4.2 as well as Kissme/Classpath
 from CVS.

Thanks a lot for that!

 The interesting thing is that the test run 200 times faster with JDK 1.4.2
 than with Kissme.  Yes TWO HUNDRED TIMES!
 [...]
 Question: what figures do people get with other open source VMs?

There are quite some differences between the free runtime environments.
(Total) running time goes from 1.2 seconds (native gcj) to 1.5 minutes
(kissme). This is on a AMD Athlon XP 1600+ (1.4 Ghz).
Note the interesting differences between the load, test and total time.
All times are best of three runs.

(gij 3.3.3)
$ time echo gnu.testlet.java.lang.Character.unicode | gij 
gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:1236ms   tests:5646ms
0 of 3578944 tests failed
 
real0m7.141s
user0m6.687s
sys 0m0.068s

(Kissme from CVS a few weeks ago)
$ time echo gnu.testlet.java.lang.Character.unicode | 
~/src/kissme/useful_scripts/kissme gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:11434ms   tests:81436ms
0 of 3578944 tests failed
 
real1m33.086s
user1m30.842s
sys 0m0.499s

(Native compiled mauve with gcj 3.3.3 -O2)
$ time echo gnu.testlet.java.lang.Character.unicode | ./mauve-native -debug
Reading unicode database...
done
Benchmark : load:594ms   tests:386ms
0 of 3578944 tests failed
 
real0m1.211s
user0m0.906s
sys 0m0.041s

(prototype Jikes RVM 2.3.2, don't have a development build handy.)
$ time echo gnu.testlet.java.lang.Character.unicode | rvm 
gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:1703ms   tests:1292ms
0 of 3578944 tests failed
 
real0m6.169s
user0m3.637s
sys 0m0.232s

(JamVM 1.1.2 with some local patches - that shouldn't impact runtime speed.)
$ time echo gnu.testlet.java.lang.Character.unicode | jamvm 
gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:3927ms   tests:7478ms
0 of 3578944 tests failed
 
real0m11.572s
user0m10.721s
sys 0m0.447s

(SableVM 1.1.2-pre as posted by Grzegorz on Planet Classpath yesterday.)
$ time echo gnu.testlet.java.lang.Character.unicode | sablevm -Y 
gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:2296ms   tests:6114ms
0 of 3578944 tests failed
 
real0m8.714s
user0m8.186s
sys 0m0.067s

(Kaffe 1.1.4 Just-in-time v3)
$ time echo gnu.testlet.java.lang.Character.unicode | kaffe 
gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:1080ms   tests:618ms
0 of 3578944 tests failed
 
real0m1.985s
user0m1.622s
sys 0m0.067s

(IKVM.NET 1.0.1549.20346 [latest snaphot]
 with Mono JIT compiler version 0.31)
$ time echo gnu.testlet.java.lang.Character.unicode | mono ikvm.exe 
gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:2725ms   tests:1393ms
0 of 3578944 tests failed
 
real0m5.656s
user0m0.075s
sys 0m0.013s



signature.asc
Description: This is a digitally signed message part
___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: The Mauve unicode testcase and VM performance

2004-04-12 Thread David P Grove

Development Jikes RVM can take a while
to build, but does buy some performance. Probably not worth it for
classpath development or mauve tests, but if you want to run some apps
it can pay off.  I have prototype and development 2.3.2 images sitting
around on my machine, so just for fun. 

prototype:
[EMAIL PROTECTED] mauve]$ time echo gnu.testlet.java.lang.Character.unicode
| rvm gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:1580ms  tests:796ms
0 of 3578944 tests failed

development
[EMAIL PROTECTED] mauve]$ time echo gnu.testlet.java.lang.Character.unicode
| rvm gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:564ms  tests:700ms
0 of 3578944 tests failed

About 10% on the tests; About 3x on
the load phase. 

--dave___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: The Mauve unicode testcase and VM performance

2004-04-12 Thread Archie Cobbs
Mark Wielaard wrote:
 There are quite some differences between the free runtime environments.

Here are some results from JC, although this is on a much faster machine
(Intel(R) Pentium(R) 4 CPU 2.40GHz):

  $ time echo gnu.testlet.java.lang.Character.unicode | jc 
gnu.testlet.SimpleTestHarness -debug
  Reading unicode database...
  done
  Benchmark : load:1734ms   tests:402ms
  0 of 3578944 tests failed

  real0m2.760s
  user0m1.970s
  sys 0m0.780s

JC was configured with --disable-assertions.

-Archie

__
Archie Cobbs  *CTO, Awarix*  http://www.awarix.com


___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: The Mauve unicode testcase and VM performance

2004-04-12 Thread Mark Wielaard
Hi,

On Mon, 2004-04-12 at 15:53, Mark Wielaard wrote:
 There are quite some differences between the free runtime environments.
 (Total) running time goes from 1.2 seconds (native gcj) to 1.5 minutes
 (kissme). This is on a AMD Athlon XP 1600+ (1.4 Ghz).
 Note the interesting differences between the load, test and total time.
 All times are best of three runs.

Since a picture says more then a bunch of numbers:
http://www.klomp.org/mark/free-vm-benchmarks/getallen.html

Sorry, I left out kissme because it was so much slower then the rest.
Interesting to see how much time each runtime spend in loading, testing
and overhead. Hope I have time next week to update it with at least rvm
development results and maybe IKVM ahead of time results (Jeroen, any
hints on how to do that in this case?)

Caution! This is a micro-benchmark for one very specialized small and
repetitive task, so don't take the number to serious.

Cheers,

Mark


signature.asc
Description: This is a digitally signed message part
___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: The Mauve unicode testcase and VM performance

2004-04-12 Thread Stuart Ballard
Mark Wielaard wrote:
and overhead. Hope I have time next week to update it with at least rvm
development results and maybe IKVM ahead of time results (Jeroen, any
hints on how to do that in this case?)
I don't know whether you have a zip/jar or individual classfiles but 
assuming it's a single jar file, presumably it would be (commands 
separated by blank lines - ignore any mailer-induced wordwrapping):

mono ikvmc.exe -target:exe -out:mauve.exe -reference:classpath.dll 
-main:gnu.testlet.SimpleTestHarness mauve.jar

time echo gnu.testlet.java.lang.Character.unicode | mono mauve.exe -debug

You may need to arrange for all IKVM's DLLs to be in the same directory 
as mauve.exe. The other thing to try would be using Mono's --aot option 
to pre-JIT (as it were) the generated exe and dlls. I've never tried 
this but in theory it appears that you should be able to do:

mono --aot mauve.exe
(and possibly also:
mono --aot classpath.dll
mono --aot IK.VM.NET.dll
etc...)
prior to running mauve.exe itself.

Of course, I'm not Jeroen and I could be missing something significant...

Stuart.

--
Stuart Ballard, Senior Web Developer
NetReach, Inc.
(215) 283-2300, ext. 126
http://www.netreach.com/


___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: The Mauve unicode testcase and VM performance

2004-04-09 Thread Stephen Crawley

Hi Guilhelm,

Thanks for the info.  Your numbers tend to confirm my suspicion that the
factor of 200 is a Kissme-specific  problem. 

In the meantime, I think I have come across a problem in Kissme's
implementation of the CONSTANT_STRING instruction that does some way
towards explaining this.

-- Steve




___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


The Mauve unicode testcase and VM performance

2004-04-08 Thread Stephen Crawley

Folks,

I've just checked in a new version of the Mauve testcase for Unicode
character handling.  This fixes previous problems that resulted in
huge numbers of test failures with the current version of Classpath.
[It turns out that they were partly because the testcase used an old
Unicode table, but mostly because of testcase bugs; i.e. tests that
were wrong vis-a-vis the JDK 1.4 javadoc.]

The testcase now runs clean for JDK 1.4.2 as well as Kissme/Classpath
from CVS.

The interesting thing is that the test run 200 times faster with JDK 1.4.2
than with Kissme.  Yes TWO HUNDRED TIMES!

$ cat /tmp/foo
gnu.testlet.java.lang.Character.unicode

$ /usr/java/j2sdk1.4.2/bin/java -cp ../mauve gnu.testlet.SimpleTestHarness \
   -debug  /tmp/foo
Reading unicode database...
done
Benchmark : load:288ms   tests:505ms
0 of 3578944 tests failed

$ useful_scripts/kissme -cp ../mauve gnu.testlet.SimpleTestHarness -debug  /tmp/foo
Reading unicode database...
done
Benchmark : load:13892ms   tests:104699ms
0 of 3578944 tests failed

(This is on a 2.5Ghz Pentium IV)

Question: what figures do people get with other open source VMs?

-- Steve



___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath


Re: The Mauve unicode testcase and VM performance

2004-04-08 Thread Guilhem Lavaux
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1
Stephen Crawley wrote:
| Folks,
|
| I've just checked in a new version of the Mauve testcase for Unicode
| character handling.  This fixes previous problems that resulted in
| huge numbers of test failures with the current version of Classpath.
| [It turns out that they were partly because the testcase used an old
| Unicode table, but mostly because of testcase bugs; i.e. tests that
| were wrong vis-a-vis the JDK 1.4 javadoc.]
|
| The testcase now runs clean for JDK 1.4.2 as well as Kissme/Classpath
| from CVS.
|
| The interesting thing is that the test run 200 times faster with JDK 1.4.2
| than with Kissme.  Yes TWO HUNDRED TIMES!
|
| $ cat /tmp/foo
| gnu.testlet.java.lang.Character.unicode
|
| $ /usr/java/j2sdk1.4.2/bin/java -cp ../mauve
gnu.testlet.SimpleTestHarness \
|-debug  /tmp/foo
| Reading unicode database...
| done
| Benchmark : load:288ms   tests:505ms
| 0 of 3578944 tests failed
|
| $ useful_scripts/kissme -cp ../mauve gnu.testlet.SimpleTestHarness
- -debug  /tmp/foo
| Reading unicode database...
| done
| Benchmark : load:13892ms   tests:104699ms
| 0 of 3578944 tests failed
|
| (This is on a 2.5Ghz Pentium IV)
|
| Question: what figures do people get with other open source VMs?
|
Thanks for fixing unicode !

On my PIV 2.5 it gives with kaffe jit3:

[EMAIL PROTECTED] mauve]$ echo gnu.testlet.java.lang.Character.unicode
| kaffe gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:1052ms   tests:334ms
0 of 3578944 tests failed
[EMAIL PROTECTED] mauve]$ echo gnu.testlet.java.lang.Character.unicode
| /usr/j2sdk1.4.2/bin/java gnu.testlet.SimpleTestHarness -debug
Reading unicode database...
done
Benchmark : load:266ms   tests:406ms
0 of 3578944 tests failed
Answer: h 70ms faster for tests but 5 times slower for loading.

Cheers,
Guilhem.
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.2.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFAdYkLWRk4qbNiTwgRArf+AKCOFjQu0gMirvywMCGUdNHvbE1q2QCgjceY
GkG9MpJGgZIDsh1auJQ/RpY=
=Pft5
-END PGP SIGNATURE-


___
Classpath mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/classpath