小编Lan*_*ceH的帖子

Haskell中的严格优化和内存分配

我一直在通过实现一个特征选择算法来学习一些Haskell.

我从20秒开始将基准数据集的性能提升到5秒,其中C程序在0.5秒内处理相同的数据集.数据集可以在这里找到.要运行,调用编译的二进制像这样:./Mrmr 10 test_nci9_s3.csv.

代码在这里,我有兴趣优化mutualInfoInnerLoop:

mutualInfoInnerLoop :: Double -> Data.Vector.Unboxed.Vector (Int, Int) -> Double -> (Int, Int, Double) -> Double
mutualInfoInnerLoop n xys !acc (!i, !j, !px_py)
    | n == 0 || px_py == 0 || pxy == 0 = acc
    | otherwise                        = pxy * logBase 2 ( pxy / px_py ) + acc
    where
        pxy = ( fromIntegral . U.foldl' accumEq2 0 $ xys ) / n
        accumEq2 :: Int -> (Int, …
Run Code Online (Sandbox Code Playgroud)

optimization haskell functional-programming

18
推荐指数
1
解决办法
510
查看次数