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 次 |
| 最近记录: |