Nor*_*sey 15 arrays haskell ghc bounds-check-elimination
我正在制作许多索引类型为Bounded
且索引范围为的数组(minBound, maxBound)
.对于这样的数组,边界检查应该是不必要的.我如何说服GHC消除边界检查?
我的特定应用程序使用盒装和非盒装不可变数组,但我对所有类型的Haskell数组感兴趣.
Dan*_*her 14
导入Data.Array.Base
,计算Int
所需元素的索引,然后使用
someArray `unsafeAt` computedIndex
Run Code Online (Sandbox Code Playgroud)
避免范围检查(unsafeRead
以及unsafeWrite
可变数组).Int
没有范围检查的索引的计算应该可以unsafeIndex
从Ix
课程中获得import GHC.Arr
.
如果Ix
索引类型的实例未提供快速未选中的unsafeIndex
功能,则必须自己编写.无论如何,这可能是更可取的,因为您的范围(minBound, maxBound)
是常量,不需要传递给索引计算.
归档时间: |
|
查看次数: |
608 次 |
最近记录: |