That was a good observation, Rupert. Well, it doesn't return Nothing if the indexes are out of the bounds, but if start < 0 then start = 0, and end >= length then end = length -1... I could actually use Array.get and implement my own map like you mention.
Thanks Robin for that correction. I thought Array.slice is using under the hood Array.prototype.slice, which as far as I know, the C++ implementation, it's O(N). If there is a new implementation with such complexity, then happy days. Was just curious to know what ideas there are out there about this problem. I'm aware of the fact that 2 * O(N) is still O(N), but my arrays might be dealing with millions of entries. Imagine a 5000px by 5000px by 3 color channels. That's 75 millions. So performance is very important. That's why I'm asking. Thanks guys On Fri, Nov 17, 2017 at 1:20 PM Robin Heggelund Hansen <[email protected]> wrote: > Slicing isn't O(N). > > In the current implementation in core, slicing is O(log32n) i believe. In > the next version of Elm, slicing is O(log32n) when start = 0; I'm uncertain > what the big-o notation is once start > 0 though. > > > fredag 17. november 2017 09.25.22 UTC+1 skrev Francisco Ramos følgende: >> >> Hi there, >> >> Was wondering how I can map over an array with a start and end indexes. I >> know I could slice the array and then map, but performance is a concern and >> slicing is O(N) where N = end - start, plus the actual mapping, another >> O(N). >> >> Maybe there is another way where I just loop once over the array? >> >> Thanks a lot, >> Fran >> > -- > You received this message because you are subscribed to the Google Groups > "Elm Discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Elm Discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
