On Sun, Nov 15, 2009 at 12:43:46PM +0100, Szabolcs Nagy wrote:
On 11/15/09, frederic <fduboi...@gmail.com> wrote:
and sacrifices some efficiency to have a few higher level language features (gc, interface, string, map, package, init, defer, closure..) as a bonus it has multi tasking support (go, chan, select), good library support and stricter semantics

Be careful what you say. None of those features necessarilly sacrifice efficiency. In fact, garbage collection can be a huge performace boon when implemented properly, in that garbage can be lazily freed in hunks and with minimal locking.

Compared to your grand-daddy's GC? Obviously yes. But no GC language has yet prevailed against C in benchmarks.

Interfaces and packages are free, as far as performance is concerned, though implementations may vary.

It seems to me that there's virtual tables behind interfaces, which means one level of indirection.
It may be cheap compared to the provided facility, but it's not free.

C strings are slow when you need to get their length.

It's not a win-all situation. Immutable strings may be more expensive in some use cases. Furthermore, they either have to convert back to zero-terminated strings when passing them to libs, or use the trick of appending ("quand même") a zero byte, which is redundant wrt to the array lenght.

Closures needn't be any more expensive than any other kind of function reference,

One has to pass at least an extra parameter, which is a pointer to the captured values. It is always more expensive than passing a pointer to a function.

All this is more than just nit-picking. Pike claims a 10-20% loss compared to C, which would still be quite good. However, the first benchmarks tell another story at the moment: http://shootout.alioth.debian.org/u64/benchmark.php?test=all&lang=go

Reply via email to