Just for curiosity, on my computer, my function (double) processes 10
million strings (first and last name) in about 3 seconds.
Very naif measurement using Timers and a limited number of names and
surnames eg Willy Weber has come up 11051 times
To demonstrate the goodness of Tobias' arguments, about 1 million 3 cents a
second I really understood (I hope) what he wanted to say.
Sorry my response times but today my modem works worse than my brain.
Regards
Gianluigi
2017-06-30 17:58 GMT+02:00 Gianluigi <bagonergi at ...626...>:
> Sorry Tobias,
> other explanations are not necessary.
>I would not be able to understand :-(
>I accept what you already explained to me as a dogma and I will try to put
> it into practice by copying your code :-).
>> Thanks again.
>> Gianluigi
>> 2017-06-30 17:44 GMT+02:00 Gianluigi <bagonergi at ...626...>:
>>>>> 2017-06-30 17:21 GMT+02:00 Tobias Boege <taboege at ...626...>:
>>>>>>>>I wouldn't say there is anything *wrong* with it, but it also has
>>> quadratic
>>> worst-case running time. You use String[].Push() which is just another
>>> name
>>> for String[].Add(). Adding an element to an array (the straightforward
>>> way)
>>> is done by extending the space of that array by one further element and
>>> storing the value there. But extending the space of an array could
>>> potentially
>>> require you to copy the whole array somewhere else (where you have enough
>>> free memory at the end of the arrayto enlarge it). Doing worst-case
>>> analysis,
>>> we have to assume that this bad case always occurs.
>>>>>> If you fill an array with n values, e.g.
>>>>>> Dim a As New Integer[]
>>> For i = 1 To n
>>>a.Add(i)
>>> Next
>>>>>> then you loop n times and in the i-th iteration there will be already
>>>i-many elements in your array. Adding one further element to it will,
>>>in the worst case, require i copy operations to be performed. 9-year-old
>>> C.F. Gauss will tell you that the amount of store operations is about
>>> n^2.
>>>>>>>> Tobias you are always kind and thank you very much.
>> Is possible for you to explain this more elementarily, for me (a poorly
>> educated boy :-) )
>>>>>>>>> And your function does two jobs simultaneously but only returns the
>>> result
>>> of one of the jobs. The output you get is only worth half the time you
>>> spent.
>>>>>>>>I did two functions in one, just to save space, this is a simple example.
>> :-)
>>>> Regards
>> Gianluigi
>>>>