200-600x slower Dlang performance with nested foreach loop

CraigDillabaugh craig.dillabaugh at gmail.com
Sun Jan 31 03:36:45 UTC 2021


On Tuesday, 26 January 2021 at 23:57:43 UTC, methonash wrote:
clip
>> That nested loop is an O(n^2) algorithm. Meaning it will slow 
>> down *very* quickly as the size of the array n increases.  You 
>> might want to think about how to improve this algorithm.
>
> Nice observation, and yes, this would typically be an O(n^2) 
> approach.
>
> However, due to subsetting the input dataset to unique strings 
> and then sorting in descending length, one might notice that 
> the inner foreach loop does not iterate over all of n, only on 
> the iterator value i+1 through the end of the array.
>
> Thus, I believe this would then become approximately O(n^2/2). 
> More precisely, it should be O( ( n^2 + n ) / 2 ).
>

But that is still O(n^2), you've only changed the constant.


More information about the Digitalmars-d-learn mailing list