当前位置 : 主页 > 网络安全 > 测试自动化 >

haskell – 是否有无箱列表,带有未装箱的矢量性能?

来源:互联网 收集:自由互联 发布时间:2021-06-22
我正在考虑专门用于信号处理.假设我想做一些像输入信号幅度加倍的事情.我希望它非常快,所以我希望信号保持在连续的存储器中(例如,未装箱的矢量).但是这个信号可以无限期地继续下
我正在考虑专门用于信号处理.假设我想做一些像输入信号幅度加倍的事情.我希望它非常快,所以我希望信号保持在连续的存储器中(例如,未装箱的矢量).但是这个信号可以无限期地继续下去,所以我希望它被视为一个无限的列表;我宁愿一次调用map(* 2)信号,而不是为每个信号块调用它.

Haskell中是否有一个数据结构可以缓冲这些数据块,以便我可以获得连续的内存性能,但是将数据视为无限流?

这只是一个很长的镜头,但是如何使用 streams足够大的无盒装载体?这将具有矢量性能的优势,同时, fusion归功于流.

更新:想法是定义一个新类型,例如:

import Data.Array.Unboxed
import Data.Stream
import Data.Word

newtype Word8Stream = Word8Stream (Stream (UArray Int Word8))

然后定义您需要的通用函数,例如

smap :: (Word8 -> Word8) -> Word8Stream -> Word8Stream
smap f (Word8Stream s) = Word8Stream $fmap (amap f) s
网友评论