Re: staticIota is easy

2016-12-10 Thread Stefan Koch via Digitalmars-d-learn

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.


Re: staticIota is easy

2016-12-09 Thread Ali Çehreli via Digitalmars-d-learn

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



Re: staticIota is easy

2016-12-09 Thread Stefan Koch via Digitalmars-d-learn

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