On 17/12/2010, at 6:34 AM, john skaller wrote:

> 
> On 16/12/2010, at 11:56 PM, Paul Steckler wrote:
> 
>> On Thu, Dec 16, 2010 at 10:43 PM, john skaller
>> <skal...@users.sourceforge.net> wrote:
>>> ~/felix>./cack # C version
>> 
>> Cack?  Such language!
> 
> 
> Last time I ran this test, Felix beat C by 50%.


Well here's the reason: Felix assembler for rec-call:

        movl    %r8d, -56(%rbp)
        movl    %r9d, -64(%rbp)
        movl    %r10d, -72(%rbp)
        movl    %r11d, -80(%rbp)
        call    __ZN6flxusr4testL3ackEii
        movl    %ebx, %edx
        movl    -56(%rbp), %r8d
        movl    -64(%rbp), %r9d
        movl    -72(%rbp), %r10d
        movl    -80(%rbp), %r11d

prologue:

LFB2131:
        pushq   %rbp
LCFI8:
        movq    %rsp, %rbp
LCFI9:
        pushq   %r15
LCFI10:
        pushq   %r14
LCFI11:
        pushq   %r13
LCFI12:
        pushq   %r12
LCFI13:
        pushq   %rbx
LCFI14:
        subq    $40, %rsp
LCFI15:

C assembler:

        leal    -1(%r12), %ebx
        leal    -2(%rax), %esi
        movl    %r12d, %edi
        call    _Ack
        movl    %eax, %esi
        movl    %ebx, %edi
        call    _Ack
        jmp     L29


the important  bit is:

_Ack:
LFB6:
        pushq   %rbp
LCFI0:
        movq    %rsp, %rbp
LCFI1:
        pushq   %r12
LCFI2:
        pushq   %rbx
LCFI3:

So it is pushing 3 machine words (inefficient!).

Interestingly .. it is NOT tail rec optimising.
[The Felix version is tail-rec optimised by Felix]

The Felix version is saving a lot more registers. No idea why.

--
john skaller
skal...@users.sourceforge.net





------------------------------------------------------------------------------
Lotusphere 2011
Register now for Lotusphere 2011 and learn how
to connect the dots, take your collaborative environment
to the next level, and enter the era of Social Business.
http://p.sf.net/sfu/lotusphere-d2d
_______________________________________________
Felix-language mailing list
Felix-language@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/felix-language

Reply via email to