[Top][All Lists]
[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
>
>