C++ vs Lisp

janderson askme at me.com
Sat May 17 18:17:37 PDT 2008


Nick Sabalausky wrote:
> "Dee Girl" <deegirl at noreply.com> wrote in message 
> news:g0noqa$2rpf$1 at digitalmars.com...
>> There was long discussion here. Maybe you did not read.
>>
> 
> Didn't see it, must have been on a different thread.
> 
>> void slowbad(delegate void() f)
>> {
>>    f();
>> }
>>
>> void fastgood(alias f)()
>> {
>>    f();
>> }
>>
>> void main()
>> {
>>    void f() { }
>>    slowbad(&f);
>>    fastgood!(f);
>> }
>>
>> Syntax is different but power is very different. std.algorithm uses alias 
>> always. Everybody else uses slowbad ^_^ Dee Girl
> 
> Isn't that akin to forcing a function to be inlined? It sounds to me like, 
> just as with normal function inlining, there are cases where that could 
> backfire because of things like increased cache misses or increased register 
> consumption (or are those outdated problems with inlining?). 
> 
> 

Only if the compiler decided to inline the contents of f function. 
Even then if the compiler can inline f's contents, its probably going to 
beable to reduce the size of the program size somewhat.  Normally the 
compiler is going to get it right with inlining.  The above template 
will boil down to:

void main()
{
    void f() { }
    slowbad(&f);  //May or maynot be inlined
    f();
}

As you can see f() is one function call less then slowbad and doesn't 
have to do any of the other stuff slowbad would.

-Joel



More information about the Digitalmars-d mailing list