[plt-scheme] xxx chooses MzScheme as preferred language
On May 31, 2006, at 5:53 PM, Jim Blandy wrote:
> On 5/31/06, Matthias Felleisen <matthias at ccs.neu.edu> wrote:
>> Bigloo isn't Scheme per se. To achieve such numbers, you're
>> programming
>> in a special-purpose language, especially when it comes to floats. You
>> write (fp+ ...) everywhere. In Bigloo you declare types at module
>> boundaries.
>>
>> Chez achieved this kind of efficiency in 1993 (without all these
>> hacks). Bruce Duba and I showed our systems hacks at Rice that their
>> claims were wrong. But boy we had to bend over backwards to get Chez
>> -o3 to be within 10% of then-C compilers. And the very moment we went
>> from ints to floats, we were hosed again (and didn't pursue it).
>
> I'm very interested in these questions, so let me pick at this a bit
> to get more detail.
>
> When you say you acheived Bigloo-like efficiency "without all these
> hacks", I assume you're referring to the deviations from Scheme you
> mentioned in the previous paragraph: special-purpose floating-point
> operators, and types declared at module boundaries.
Yes.
> But you say that
> you were hosed if you used floats --- so you trivially avoided needing
> special-purpose floating-point operators, by not using any
> floating-point values? Then it wasn't the same problem, was it?
No, yes. The C problems all involve vector stuff and usually some
amount of random access. So lists don't hack it. So you immediately use
data structure and occasionally algorithmic tricks. Eventually you
"hand prove" type violations away and run it with -O3. (You also try to
get around vector-bound checks.)
As long as your vectors use ints, you did as well as these alternative
Scheme implementations. Indeed, you could get within a 10 perhaps 20%
of C. (I wouldn't call it "the natural Scheme program anymore" because
of the algorithmics.)
When the vectors contain floats, you lose a factor of 3 or so in Chez.
You lose more in Bigloo or Gambit unless you go outside of plain Scheme
already. But when these latter (and now Chez) rewrite their programs to
separate out numeric types, they beat Chez. So that's the gain over 10
years or so.
Is this clearer?