staticIota is easy

Stefan Koch via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Dec 9 23:59:53 PST 2016


On Saturday, 10 December 2016 at 01:48:24 UTC, Ali Çehreli wrote:
> On 12/09/2016 05:34 PM, Stefan Koch wrote:
>> On Friday, 9 December 2016 at 18:52:59 UTC, Ali Çehreli wrote:
>>> I thought I needed something like staticIota in a unittest to 
>>> effect
>>> static foreach over a number range and I found one in 
>>> druntime's
>>> implementation:
>>>
>>>
>>> https://github.com/dlang/druntime/blob/master/src/core/internal/traits.d#L106
>>>
>>>
>>> (I wonder why that one is implemented in divide-and-conquer 
>>> fashion.
>>> Perhaps due to faster compilation that way?)
>>>
>>
>> Yes it is.
>> n log n
>> instead of n^2
>>
>
> Makes sense. I was stopping my counting at n: both looked O(n) 
> to me. :)
>
> How about my staticIota()? Is it n^2 inside the compiler?
>
> Ali

it's O(n log n)*((n!)/some_really_large_number)

Because the template-subsystem is it not really build for a abuse 
like AliasSeq.
After a cut-off point the factorial factor will dominate.


More information about the Digitalmars-d-learn mailing list