小编Mdx*_*hmt的帖子

为什么我的程序使用这么多内存?

对于仅25mb的文件,内存使用量恒定为792mb!我认为它与我在list中的用法有关,但移动vector的代码的某些部分(例如,应用了fft的数组)并没有改变使用多少内存!

{-# LANGUAGE OverloadedStrings,BangPatterns #-}
import qualified Data.Attoparsec.Char8 as Ap
import Data.Attoparsec
import Control.Monad
import Control.Applicative
--import Control.DeepSeq (force)
import System.IO 
import System.Environment
import Data.List (zipWith4,unzip4,zip4,foldl')
import Data.Bits
import Data.Complex
import Data.String (fromString)
import Data.ByteString.Internal
import qualified Data.ByteString.Char8 as B
import qualified Data.ByteString.Lazy.Char8 as Bl 
import qualified Data.Vector.Unboxed as Vu
import qualified Statistics.Transform  as St



{-
I run a test on a collection of data from a file
[(1,t),(2,t),(3,t),(4,t),(5,t)]
   -     -     - 
   |     -     -     -
   |     |     -     - …
Run Code Online (Sandbox Code Playgroud)

haskell memory-leaks

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

为什么Windows需要withSocketsDo?

在Windows中,需要初始化套接字,如网络中所示.

在Windows操作系统上,必须先使用withSocketsDo初始化网络子系统,然后才能使用任何网络操作.例如.

  main = withSocketsDo $ do {...}
Run Code Online (Sandbox Code Playgroud)

虽然这在Windows平台上是非常必要的,但在其他平台上它是无害的,因此为了便于携带,最好始终使用它.

窗户有什么特别之处?

sockets haskell

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

是否有类似于循环展开的优化功能编程?

免责声明:我对ghc编译管道知之甚少,但我希望通过这篇文章了解更多关于它的信息,例如,如果将命令与功能进行比较与代码编译相关.

如您所知,循环展开通过复制其中的代码来减少循环中的迭代次数.这提高了性能,因为它减少了跳转次数(以及与之相关的惩罚)和AFAIR,创建了更大的代码块,为更好的寄存器重命名优化留出了空间.

我想知道,是否可以使用Loop Unrolling进行函数式编程?我们可以"展开"一个函数,打开/扩展它的定义,首先减少对所述函数的调用次数和/或创建更大的代码块 - 然后为更多的代码重写优化留出空间(比如寄存器重命名,或者一些FP)当量)?

可以"展开"或"扩展"函数定义的东西,例如使用函数评估(可能与某种策略混合),以便在空间与时间之间进行权衡.

我想到的一个例子:

 map1 _ [] = []
 map1 f (x:xs) = (f x): map f xs
Run Code Online (Sandbox Code Playgroud)

将展开

map2 _ [] = []
map2 f (x:x1:xs) = (f x):(f x1):map2 f xs
map2 f (x:xs) = (f x): map2 f xs
Run Code Online (Sandbox Code Playgroud)

再一次:

map4 _ [] = []
map4 f (x:x1:x2:x3:xs) = (f x):(f x1):(f x2):(f x3):map4 f xs
map4 f (x:x1:x2:xs) = (f x):(f x1):(f x2):map4 f xs
map4 …
Run Code Online (Sandbox Code Playgroud)

haskell ghc compiler-optimization loop-unrolling

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