Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
March 14, 2013 Overhead when using a C library | ||||
---|---|---|---|---|
| ||||
Hey guys! I am working on a binding for D, and am almost finished! I started to think of some things I might like to work on to improve the binding after I get everything working, and one of the things I thought of was rewriting certain parts to use only D code instead of making calls to the C functions. Is there any kind of performance overhead in using C libraries to interact with your D program? If it isn't going to offer much performance gain then I probably don't need to bother writing extra code. Thanks as usual! |
March 14, 2013 Re: Overhead when using a C library | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jeremy DeHaan | On 03/14/2013 01:48 AM, Jeremy DeHaan wrote:
> Hey guys!
>
> I am working on a binding for D, and am almost finished! I started to
> think of some things I might like to work on to improve the binding
> after I get everything working, and one of the things I thought of was
> rewriting certain parts to use only D code instead of making calls to
> the C functions. Is there any kind of performance overhead in using C
> libraries to interact with your D program? If it isn't going to offer
> much performance gain then I probably don't need to bother writing extra
> code.
>
> Thanks as usual!
There is no additional overhead (though the D compiler will not be able to inline C functions, whereas an identical D function may be inlined.)
|
March 14, 2013 Re: Overhead when using a C library | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jeremy DeHaan | On Thursday, 14 March 2013 at 00:48:53 UTC, Jeremy DeHaan wrote:
> Hey guys!
>
> I am working on a binding for D, and am almost finished!
Are you going to publish this binding? Which library?
|
March 14, 2013 Re: Overhead when using a C library | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timon Gehr | On 03/14/13 01:52, Timon Gehr wrote:
> On 03/14/2013 01:48 AM, Jeremy DeHaan wrote:
>>
>> I am working on a binding for D, and am almost finished! I started to think of some things I might like to work on to improve the binding after I get everything working, and one of the things I thought of was rewriting certain parts to use only D code instead of making calls to the C functions. Is there any kind of performance overhead in using C libraries to interact with your D program? If it isn't going to offer much performance gain then I probably don't need to bother writing extra code.
>
> There is no additional overhead (though the D compiler will not be able to inline C functions, whereas an identical D function may be inlined.)
Like Timon said - there's is zero overhead.
Even the inlining limitation only applies to /some/ compilers. [1]
xlanginline1.d:
extern extern(C) int c();
int main() { return 2*c(); }
xlanginline2.c:
int c() { return 21; };
compiled with GDC + -flto:
08049820 <_Dmain>:
8049820: 55 push %ebp
8049821: b8 2a 00 00 00 mov $0x2a,%eax
8049826: 89 e5 mov %esp,%ebp
8049828: 5d pop %ebp
8049829: c3 ret
artur
[1] and versions, unfortunately.
|
March 14, 2013 Re: Overhead when using a C library | ||||
---|---|---|---|---|
| ||||
Posted in reply to Timon Gehr | On Thursday, 14 March 2013 at 00:52:41 UTC, Timon Gehr wrote:
> On 03/14/2013 01:48 AM, Jeremy DeHaan wrote:
>> Hey guys!
>>
>> I am working on a binding for D, and am almost finished! I started to
>> think of some things I might like to work on to improve the binding
>> after I get everything working, and one of the things I thought of was
>> rewriting certain parts to use only D code instead of making calls to
>> the C functions. Is there any kind of performance overhead in using C
>> libraries to interact with your D program? If it isn't going to offer
>> much performance gain then I probably don't need to bother writing extra
>> code.
>>
>> Thanks as usual!
>
> There is no additional overhead (though the D compiler will not be able to inline C functions, whereas an identical D function may be inlined.)
A decent link-time optimiser will be able to do the inlining where appropriate. gdc can be compiled with lto enabled, as Artur shows in his reply.
|
Copyright © 1999-2021 by the D Language Foundation