
On Sun, Nov 15, 2009 at 8:59 PM, Don Stewart
alexey.skladnoy:
I found that perfomace of indexU is very poor and it is not fast O(1) operation which is very surprising. Here is some benchmarcking I've done. Everything compiled with -O2
You're using the streamed version when its not fusing. Use the non-streaming direct implementation exported from Data.Array.Vector.UArr
This is really an API bug, but I've not had time to sanitize the use.
Probably this should be stated more explicitly in documentation. This is
_very_ unexpected and confusing behaviour.
Also I don't quite understand nature of bug. Is this missing export or
wrong function is exported. And is streamed version of idexU useful
and in which way?
On Sun, Nov 15, 2009 at 9:11 PM, Thomas DuBuisson
The documentation explicitly says indexU is O(n) - no need for so much testing to rediscover that fact. When I needed a contiguous block of values in UArr, I just relied on sliceU to acquire the block and performed a foldU.
Problems begin when you need non-contiguous block. Easiest way to so is indexing.