小编lob*_*ism的帖子

是否有可能在Haskell中为流记录制作快速大循环缓冲区数组?

我正在考虑将C#应用程序转换为Haskell作为我的第一个"真正的"Haskell项目.但是我想确保它是一个有意义的项目.应用程序收集来自大约1 kHz的~15个串行流的数据包,将这些值加载到我的"上下文"对象上的相应循环缓冲区中,每个缓冲区包含~25000个元素,然后以60 Hz将这些数组发送到OpenGL for波形显示.(因此,它具有被存储为阵列,或者至少转化成每16毫秒阵列).我的上下文对象上还有大约70个字段,我只维护当前(最新)值,而不是流波形.

这个项目有几个方面可以很好地映射到Haskell,但我担心的是性能.如果对于任何流中的每个新数据点,我必须使用70个字段和15个25000个元素数组克隆整个上下文对象,显然会出现性能问题.

我可以通过将所有内容放入IO-monad来解决这个问题吗?但那似乎在某种程度上打败了使用Haskell的目的,对吧?我在C#中的所有代码都是事件驱动的; 在哈斯克尔有没有成语?似乎添加一个监听器会产生"副作用",而我不确定该怎么做.

haskell

7
推荐指数
2
解决办法
355
查看次数

标签 统计

haskell ×1