
Bulat Ziganshin wrote:
Hello Andrew,
Sunday, May 18, 2008, 3:42:23 PM, you wrote:
Isn't there some function kicking around somewhere for acessing arrays without the bounds check? Similarly, I'm sure I remember the Data.Bits bounds check being mentioned before, and somebody saying they had [or were going to?] make an unsafe variant available. I've looked around the library documentation and I'm not seeing anything... any hints?
unsafeRead/Write
Found in Data.Array.Base, apparently. (I managed to find an example in the Gtk2hs "fastdraw" demo.) Oddly, this seems to make virtually no performance difference. I find this highly surprising. But then, I perform 16 write to the array, and 64 reads from the ByteString, so maybe that's where I should be worrying about bounds checks...
(I# a) <<# (I# b) = (I# (a `iShiftL#` b)) (I# a) >># (I# b) = (I# (a `uncheckedIShiftRL#` b))
Does it make a difference if I want Word32 instead of Int?