Hi John,
> You mentioned the gobo eiffel compiler. I've seen it before, and I know
> it's your work. Are you saying that it is likely to be more efficient on
> certain things than Eiffel.com's compiler achieves with finalized code?
>
> Also, its webpage indicates that a lot of Eiffel's features are not
> implemented, but to be honest I remember looking at it years ago and it
> looks like it's exactly the same list as it was then. Is it any more
> up-to-date.
I think that this list:
http://www.gobosoft.com/eiffel/gobo/gec/limitations.html
is pretty accurate. Note that other Eiffel compilers might have other
limitations, even if they are not made as visible as in this page.
You said that a lot of Eiffel's features are not implemented. To be
honest, I think that this list is pretty small compared to all the
other Eiffel's features which are implemented. And for your project
you should not be impacted by what is not implemented (otherwise
I would have not suggested that you could try it).
For your project, what is interesting with Gobo is that:
* It produces much smaller executables when your project is small
(no huge run-time of stuff not used in small programs).
* No GC by default. Note that this is better than having a GC
which is turned off because even though no GC cycle is triggered,
the GC still keeps track of the objects being created.
* Less overhead on each feature call. This is important if your
recursive calls are deep. Because of the moving GC of EiffelStudio,
there is an overhead at the beginning of each feature call in
order to register the local variables and arguments.
* The Gobo compiler does some static analysis of the dynamic type
set of each entity in the Eiffel program, which makes it possible
to better optimize polymorphic calls if the dynamic type set
of the target of the call contains only one type.
* Thanks the dynamic type sets computed above, the Gobo compiler
can also report possible CAT-calls at compilation time. But this
is less relevant for you because it does not bring any improvement
in speed or executable size.
One last thing to get better speed is too make sure that the
setting 'exception_trace' is turned off in your ECF file
(this is the default in ECF, but EiffelStudio might turn it
on during the development stage).
Note that the Gobo compiler can compile itself and produces an
executable that is smaller and runs faster than when compiled
with EiffelStudio. With that respect, it has benchmarks similar
to what we used to have with SmartEiffel. But the big improvement
over SmartEiffel is that it is fully compatible with EiffelStudio.
It even uses the same kernel library. This means that you can
do your development, debugging, etc. with the nice IDE of
EiffelStudio, and decide to compile with the Gobo compiler
(or not) at the end of development in case it produces a better
executable (or not) for what you want to achieve.
If you decide to give it a try and need some help with it, you
can either contact me directly or use Gobo mailing list.