0 cost template instantiation
Hipreme
msnmancini at hotmail.com
Thu Sep 30 02:02:19 UTC 2021
On Thursday, 30 September 2021 at 01:56:42 UTC, Basile B. wrote:
> On Thursday, 30 September 2021 at 01:09:47 UTC, Hipreme wrote:
>> I have a template function that all it does is given a symbol,
>> it loads a dll for its type + its name:
>>
>> ```
>> void loadSymbol(alias s, string symName = "")()
>> {
>> static if(symName == "")
>> s = cast(typeof(s))_loadSymbol(_dll, (s.stringof~"\0").ptr);
>> else
>> s = cast(typeof(s))_loadSymbol(_dll, (symName~"\0").ptr);
>> }
>> ```
>>
>>
>> The main problem is that this function is costing 2KB per
>> instantiation, which is something pretty high. Specially if I
>> inline, there is almost no cost when compared to its inline
>> version. Trying to use pragma(inline, true) didn't do anything
>> too.
>
> cant you just use a regular functions ? loading happens at
> runtime right ?
The entire reason to having that function is having that syntax
which would pretty much do the monkey's job for me:
Instead of writing
myFunction = cast(typeof(myFunction))_loadSymbol(_dll,
"myFunction");
I could write
loadSymbol!myFunction;
But if no other way is found of doing that, I will do the massive
rewriting.
Anyway, I don't think the problem is not in the way I'm doing,
but the output, as that template could easily be inlined
More information about the Digitalmars-d-learn
mailing list