trying to see Exupery in action

bryce at kampjes.demon.co.uk bryce at kampjes.demon.co.uk
Fri Oct 6 20:06:50 UTC 2006


Hi Chris, 

If the tests are passing (ignoring those that rely on GraphViz) then
it's working.

  ExuperyBenchmarks new run

Which on my machine produces the following output on the transcript:

  arithmaticLoopBenchmark 1395 compiled 91 ratio: 15.330
  bytecodeBenchmark 2132 compiled 456 ratio: 4.675
  sendBenchmark 1588 compiled 684 ratio: 2.322
  doLoopsBenchmark 1086 compiled 649 ratio: 1.673
  largeExplorers 337 compiled 366 ratio: 0.921
  compilerBenchmark 794 compiled 767 ratio: 1.035
  Cumulative Time 4241.294 compiled 1389.046 ratio 3.053

Only the latest versions from SqueakSource will show an improvement
for the compilerBenchmark. The current release is trying to provide an
improvment for both the compiler benchmark and the largeExplorers
benchmark. Both are using profile driven
compilation. compilerBenchmark is only spending 5% of it's time in
native code and native code support routines. Only 1.9% is actually in
native code. There's room to improve both by tuning the support code
and by improving the profiler.

Will run the benchmark suite. That should give you an idea about how
Exupery is performing. 

The problem you encountered was you need to tell Exupery to compile
methods, it does not compile automatically yet. This is to make it
easier to debug. 

In the latest development builds try something like:

  ExuperyProfiler optimise: [ExuperyBenchmarks new compilerBenchmark].
  ExuperyBenchmarks new compilerBenchmark
  Exupery dynamicallyInline.

Which is what the last two benchmarks call. #optimise: profiles the
block then compiles the most promising methods. #dynamicallyInline
reads the polymorphic inline caches then dynamically inlines and
compiles any primitives that were called (and Exupery knows how to
compile).

  Exupery
	compileMethod: #benchmark
	class: SmallInteger
	inlining: {{43. Array}. {62. Array}}.
  Exupery
	compileMethod: #benchFib
	class: SmallInteger.

Will manually compile the methods used by the bytecode
benchmark. Exupery compiles a version of each method for each
individual receiver. David calls this method copy-down. At the moment,
except for the #at: and #at:put: primitives which are specialised for
each receiver it's probably not providing much value in Exupery.

Bryce



More information about the Exupery mailing list