<html> <body> <font size=3>At 01:08 AM 21/06/2006, you wrote:<br> <blockquote type=cite class=cite cite="">On Tue, 2006-06-20 at 14:08 +0900, Wayne Kelly wrote:<br> > Complete source code of our system can be downloaded from:<br> > <a href="http://plas.fit.qut.edu.au/Ruby.NET" eudora="autourl"> http://plas.fit.qut.edu.au/Ruby.NET</a><br><br> The download page gives an ASP error message.</font></blockquote><br> And what error is that? (I don't get any errors)<br><br> <blockquote type=cite class=cite cite=""><font size=3>> Please note, that we have so far made no attempt to optimize the performance<br> > of our system or to provide any support for interoperability with .NET<br> > programs written in other languages. We have chosen instead to initially<br> > focus on the challenging task of achieving complete semantic compatibility<br> > with the standard Ruby interpreter. Once this is achieved we will move on to<br> > those other challenges. <br><br> Even though you have said that, I am salivating a little. Okay, really,<br> a lot. If I understand your project page description of your approach<br> correctly, in theory, your approach would out-perform YARV by quite a<br> bit in most test cases because it's compiled. Can you tell us how much<br> overhead is added by having to send all method calls through your custom<br> call dispatcher?</font></blockquote><br> It does basically what the Ruby interpreter does ...<br> It needs to work out the Ruby class of the receiver object and search<br> for the method (by ID) in the method table of that class. If it can't<br> find it there it needs to search in sub-classes (and mix-ins).<br> The Ruby interpreter optimises this slightly by caching the methods<br> that have been called previously, but it still needs to do at least this<br> one cache lookup. We haven't yet implemented such a caching mechanism<br> but we will do so.<br> On locating the method it needs to check if it can be legally accessed<br> (public, private or protected).<br><br> <blockquote type=cite class=cite cite=""><font size=3>If it's not much then the benchmarks should come out a<br> little slower than C# execution speeds ... which would just be amazing.</font></blockquote><br> I wouldn't be so confident.<br><br> <blockquote type=cite class=cite cite=""><font size=3>Obviously, the load-compile-run is going to be slower than in Ruby 1.8,</font></blockquote><br> Not necessarily, once the load-compile step is out of the way,<br> we are executing native JIT compiled code rather than the interpreting<br> that Ruby 1.8 is doing.<br><br> <blockquote type=cite class=cite cite=""><font size=3>I know you haven't focused on performance yet but if you could just<br> comment on what you believe the performance "ceiling" is ...</font></blockquote><br> I suspect some programs will run faster compiled to Managed .NET code<br> and some will run faster interpreted with the native C interpreter.<br><br> <blockquote type=cite class=cite cite=""><font size=3>I noticed, also, that you are funded by Microsoft and, as such, I'm sure<br> you're not very keen on Mono, but, I am curious, have you tried<br> compiling this on Mono's GMCS (their DotNet 2.0 compiler)?</font></blockquote><br> We don't have any issues with Mono. I haven't had the chance to try <br> our compiler on Mono but I'd be really interested to know if it works.<br> And if not, if there's anything we need to change. We're more than<br> happy to cooperate with any such efforts.<br><br> Cheers, Wayne.<br><br> <x-sigsep><p></x-sigsep> <font size=3>Dr Wayne Kelly<x-tab> </x-tab><x-tab> </x-tab><x-tab> </x-tab>Senior Lecturer <br> Email: w.kelly / qut.edu.au<x-tab> </x-tab><x-tab> </x-tab>School of Software Engineering and DC <br> Phone: +61 7 3864 9336<x-tab> </x-tab><x-tab> </x-tab>Faculty of Information Technology <br> Fax: +61 7 3864 9390<x-tab> </x-tab><x-tab> </x-tab>Queensland University of Technology<br> </font></body> </html>