chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-users] About peformance of user defined procedures


From: Pedro Henrique Antunes de Oliveira
Subject: Re: [Chicken-users] About peformance of user defined procedures
Date: Sat, 30 Jul 2011 21:29:35 -0300

I've taken a look at compiler macros. I see how it could help with
performace, but I don't get how it would help in this case.

Could you explain?

On Sat, Jul 30, 2011 at 8:51 PM, Kon Lovett <address@hidden> wrote:
>
> On Jul 30, 2011, at 4:43 PM, Pedro Henrique Antunes de Oliveira wrote:
>
>> Hey.
>>
>> I have a file map.scm, which contais this code:
>>
>> (define (mymap1 op ls)
>>  (let loop ((ls ls) (acc '()))
>>    (if (null? ls)
>>        (reverse acc)
>>        (loop (cdr ls) (cons (op (car ls)) acc)))))
>>
>> (define (mymap2 op ls)
>>  (let loop ((ls ls))
>>    (if (null? ls)
>>        '()
>>        (cons (op (car ls)) (loop (cdr ls))))))
>>
>> (define (mymap3 op ls)
>>  (if (null? ls)
>>      '()
>>      (cons (op (car ls)) (mymap3 op (cdr ls)))))
>>
>> (define ls (let loop ((i 0)) (if (= i 1000000) '() (cons i (loop (add1 
>> i))))))
>>
>> And another four files, f1.scm, f2.scm, f3.scm, f4.scm.
>>
>> f1.scm
>> (include "map.scm")
>> (map add1 ls)
>>
>> f2.scm
>> (include "map.scm")
>> (mymap1 add1 ls)
>>
>> f3.scm
>> (include "map.scm")
>> (mymap2 add1 ls)
>>
>> f4.scm
>> (include "map.scm")
>> (mymap3 add1 ls)
>>
>> Compiling all four f[1-4].scm files, with csc -O3, I got those results:
>>
>> f1 took 0.95secs (average)
>> f2 took 1.65secs (average)
>> f3 took 1.35secs (average)
>> f4 took 1.35secs (average)
>>
>> I understand why f4 and f3 are pretty much the same thing, but what
>> differs from mine to the built in map that makes the built in so
>> faster (2-3x faster)?
>
> I think map is one of the procedures "open-coded" by the compiler.
>
>>
>> Interpreted languages have this characteristic that built in
>> procedures tend to be much faster, but this all is compiled. I suppose
>> it is possible to make procedures, in chicken/scheme that are as fast
>> as the built in one. Right?
>
> See compiler macros.
>
>>
>> Note: compiling with -O5 instead of -O3 made the programs 0.1secs "shorter".
>> Note2: this is not about map specifically (I've been looking at some
>> procedures that I have that look somewhat to some built in ones, but
>> are much slower)
>>
>> _______________________________________________
>> Chicken-users mailing list
>> address@hidden
>> https://lists.nongnu.org/mailman/listinfo/chicken-users
>
>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]