Today I finished off my thesis and brought it to the copy shop for printing. Next week will be the final discussion. But this is mostly a formality. This means that I’m FREE! YAY! Cheer with me and celebrate! 🙂

JamVM is the best

In my last post I benchmarked some interpreters found that JamVM is the fastest but a little unstable. Well, this turned out to be not true. One failure (in the bloat benchmark) was caused by me benchmarking with an older version, the other two failures are caused by a bug in GNU Classpath (which was even introduced by myself..). Now JamVM runs all tests just fine and is still the fastest. Hurray! Thanks Robert for quickly responding and helping figure out the problems.

Interpreter Catfight

I did some benchmarks (Dacapo) of various interpreters. Find the results below. Interesting is that not one of the VMs I tested passed all Dacapo benchmark runs, not even the JDK. JamVM is the fastest but relativly unstable (fails at least 3 runs). If you’re interested in the actual numbers, ping me and I’ll be happy to paste them somewhere.

PLEASE NOTE that this only compares INTERPRETER performance. It doesn’t do the JITs any justice (Kaffe, Cacao and Hotspot) since they are running in slow-motion here. Also, apologize that I have Jamaica 3x here, that’s because I made this chart for my thesis and this happens to be all about Jamaica. Oh, and I should add that lower bars are better (the numbers on the left hand side are milliseconds needed to execute the benchmark)

Interpreter Performance

These days

… things are trodding along quite nicely. I have one and a half week to go for my thesis (yuckie!) and I’m almost done. I have made myself a kind of plan to write at least four pages a day (to avoid this exponential growth effect at the end) and it seems that this is not too hard. At least, for the past 2 weeks I managed to stick to this.

Last week my car f***ed up a little, which was quite annoying. It turned out that the starter went bonkers and wouldn’t start the car anymore, so today I changed it (or let it change) and now it’s tucking again.

On the weekend, we collected lots of Ransoms, which is only growing a couple of weeks in the spring here (now) and tastes very fine. We already made some pesto of it and butter. Yummie. Also, we found out that Dandelion is actually quite good for salad. I think I am getting closer and closer to be a complete vegetarian.

On friday I will have a small trip to Zurich, which I am quite excited about. I’ve never been there and it’s said to be a nice town.

Dear Spammer,

I notice you have been clever enough to crack the HashCash plugin (for now). So I see myself forced to add a captcha image, in addition to the Askiment, Bad Behaviour and above mentioned Hashcash plugins. Let’s see how long it takes until you crack this kind of spam protection. I hope that the processing time for the Hashcash JavaScript and the character recognition for the captchas will melt your spam bot boxes, or at least make it expensive enough for you to stop spamming. I don’t get your ‘business model’ anyway. Is this spamming any use for you? Do you make any one buck of it?

To all the honest blog readers and commenters I apologize for this small inconvience. Blame the spammers. I hope you enjoy decoding funny images 😉

Threading in ANSI-C

Thanks to Kannan Goundan I think I now found a solution to the threading-in-ANSI-C problem that I had. Basically this approach implements a tail recursion and ‘hopes’ that the compiler detects and resolves this (avoiding a stack overflow). You better check carefully if that is the case on your particular compiler though. Check out the 1st comment on the above linked posting for a prototype. Below you find some snippets of the generated assembly code of GCC and Microsoft’s compiler (no, I won’t spam the planets with that 😉 ).

Read more of this post

Thesis Threading

I’m doing the finishing strokes on my diploma thesis these days. I won’t do much implementation anymore, only some testing, benchmarking and writing. So far, the benchmarks (Dacapo) show a 40% improvement in performance compared to when I started, which is significantly better than I had hoped in the first place.

One annoyance is left though. The implementation of threaded dispatching uses GCC specific syntax extension for C, namely the ‘label pointers’ (&&label) and ‘goto *address ‘ things. Unfortunately, JamaicaVM has also ports for WindowsCE and OS9, where we don’t use GCC, but Microsoft C Compiler and some OS9 only thingy (Ultra-C). I don’t know of any way to implement threading in ANSI-C, any ideas are very much appreciated. So if you know of any hacks to implement threaded dispatching on these platforms/compilers, or even in ANSI-C, please tell me!