小编vve*_*bik的帖子

Haskell模块优化

我有Haskell模块优化的问题.

有主模块.

{-# LANGUAGE OverloadedStrings #-}
module Main where

import Control.DeepSeq
import Formatting
import Formatting.Clock
import System.Clock

import Data.Array

size :: Int
size = 200 :: Int

stdMult     :: (Ix a, Ix b, Ix c, Num d) =>
               Array (a,b) d -> Array (b,c) d -> Array (a,c) d
stdMult x y =  array resultBounds
                 [((i,j), sum [ x!(i,k) * y!(k,j) | k <- range (lj,uj)])
                                   | i <- range (li,ui),
                                     j <- range (lj',uj') ]
    where ((li,lj),(ui,uj))     = bounds …
Run Code Online (Sandbox Code Playgroud)

optimization haskell

6
推荐指数
1
解决办法
152
查看次数

为什么严格性会使Haskell的性能变差

我玩严格的评估,向量和矩阵,得到了一个相当奇怪的结果.有以下代码:

module Test where

import qualified Data.Vector as V
import qualified Data.Matrix as M

import Control.DeepSeq

matrixCtor :: Int -> Int -> Int -> M.Matrix Int
matrixCtor x y size = M.matrix size size $ \(i,j) -> x*i+y*j

f :: M.Matrix Int -> M.Matrix Int
f b = c
  where
    n = M.nrows b
    bt' = V.generate n $ \j -> M.getCol (j+1) b
    c = M.matrix n n $ \(i,j) -> V.sum  (V.unsafeIndex bt' (j-1))
Run Code Online (Sandbox Code Playgroud)

我将其加载到ghci并执行以下操作:

*Main Test> :set …
Run Code Online (Sandbox Code Playgroud)

haskell lazy-evaluation

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

标签 统计

haskell ×2

lazy-evaluation ×1

optimization ×1