[英]Can I exploit lazy evaluation to reference future values without space leaks?
我正在嘗試使用 function 的部分 output 作為其輸入之一,嘗試在大量輸入上運行價格適中的 function。 代碼按預期運行,不幸的是它在此過程中消耗了大量的 memory (堆上略低於 22GiB,最大駐留略高於 1GiB)。 這是我的意思的簡化示例:{-# LANGUAGE Ov ...
[英]Can I exploit lazy evaluation to reference future values without space leaks?
我正在嘗試使用 function 的部分 output 作為其輸入之一,嘗試在大量輸入上運行價格適中的 function。 代碼按預期運行,不幸的是它在此過程中消耗了大量的 memory (堆上略低於 22GiB,最大駐留略高於 1GiB)。 這是我的意思的簡化示例:{-# LANGUAGE Ov ...
[英]Avoiding space leaks with `mapM` and `foldM` over `State` monad
在State monad 上使用foldM和mapM時如何避免空間泄漏? 去年的第 20 天代碼出現有一個難題,即根據如何穿過迷宮的說明生成迷宮的 map。 例如, NN給迷宮的指令 (一條筆直的走廊向北兩步),並且指令NNN(EE|WW)S給出了迷宮 (向北走一點,然后是 go 向東然后向南或 ...
[英]Debug memory issue in Haskell
我正在嘗試解決Haskell中整個代碼系列的問世。 我在解決2015/06練習時遇到了內存問題,其中有一堆指令可以打開,關閉和切換網格上的燈光。 目標是計算最后點亮的燈數。 給定指令被解析並存儲在Instruction類型中,這是類型定義: data Instruction = ...
[英]Space leak in C++?
在Google的C ++測試框架中 ,我的眼睛是: ..立即從當前函數返回,可能會跳過其后的清理代碼,這可能會導致空間泄漏 。 而我的大腦希望看到內存泄漏。 C ++中使用該術語嗎? 如果是這樣,這是什么意思(換句話說,它與內存泄漏有何區別)? 在Haskell ...
[英]Space leak in Haskell - old compiler's fault or mine? Apparently the latter
我最近參加了競爭性的編碼競賽。 這個Haskell在運行ghc 7.6.3的判斷系統上發生了空間泄漏: 比賽結束后,測試用例發布。 其中一個失敗案例是:(一個包含10 ^ 5個關閉的parens的文件): https : //cses.fi/download/1/b575d1 ...
[英]Haskell bottom-up DP space leak
抱歉,如果這太具體了,我是新來的,不確定是否合理。 數小時來,我一直對這個問題ash之以鼻,無可奈何。 以下代碼是我對競爭性編程問題的實現。 目的是像自底向上的動態編程解決方案一樣工作,它使用fold insolve生成前一個DP表的每一行。 理論上,GHC應該能夠優化表的所有舊行 ...
[英]Space leak in dynamic Haskell
我幾天前發布了這個問題: 使用動態編程的Haskell性能 ,建議使用ByteStrings而不是Strings。 用ByteStrings實現算法后,程序崩潰,超出了內存限制。 內存消耗似乎與n成比例。 輸入字符串的長度為1000個字符。 我希望Haskell在打印每個解決方案后 ...
[英]Confused: Haskell IO Laziness
我在理解Haskell懶惰評估方面遇到了困難。 我寫了簡單的測試程序。 它讀取4行數據,第二和第四輸入行有很多數字。 words和map是在懶惰的字符流上執行的,這個程序使用常量內存。 但是當我添加參數t ,情況就會發生變化。 我的期望是因為t是延遲流上的map和wor ...
[英]Haskell Space Leak
所有。 在嘗試解決一些編程測驗時: https : //www.hackerrank.com/challenges/missing-numbers ,我遇到了空間泄漏問題。 主要功能是difference ,實現多組差異。 我發現List':'和Triples(,,)保持在-hT選 ...
[英]Why does my parallel traversal Haskell program leak memory?
考慮以下Haskell程序(我這樣做主要是出於學習目的): 當我運行它時,內存很快就會升至幾GB。 我嘗試了各種組合以確保丟棄中間計算的結果(打印操作)。 為什么它還在泄漏空間? ...
[英]Space leak with recursive list zipWith
我的空間泄漏發生在我的一個個人項目中。 但我不希望有人在我的項目中解決它。 我想了解它。 我通過編寫這個算法來重現我的空間泄漏: u是由以下定義的序列: u(0)= 1 你(1)= 2 你(2)= 1 你(4)= 3 ... 你( ...
[英]Is there a space leak in this Haskell implementation of LPath?
為了好玩,我嘗試編寫朴素的最長路徑算法的實現(用於查找循環圖中最長的非循環路徑的長度)。 我從命令式算法的直接移植入手,該算法運行良好且性能良好。 data Route = Route {dest:: !Int32, cost:: !Int32} type Node = [Route] ...
[英]How do I get lazy streaming into the foldl'?
一個人如何制作自己的流代碼? 我當時隨機生成了約10億對戰斗甲板,但我希望它們能被懶散地流進折疊架,但空間泄漏了! 這是代碼的相關部分: 當我用-O2運行它時,它首先開始凍結我的計算機,然后該程序消失,並且計算機恢復了運行(然后Google Chrome瀏覽器有了它要消耗我所有資源的 ...
[英]How do I parse a large data block into memory in Haskell?
經過反思,整個問題可歸結為更簡潔的問題。 我正在尋找一個Haskell數據結構 看起來像一個列表 有O(1)查找 有O(1)元素替換或 O(1)元素追加(或前置...我可以反轉我的索引查找,如果是這種情況)。 我總是可以用一個或另一個來編寫我以后的算法。 內 ...
[英]Performance of Floyd-Warshall in Haskell – Fixing a space leak
我想使用Vector來在Haskell中編寫Floyd-Warshall所有對最短路徑算法的有效實現,以期獲得良好的性能。 該實現非常簡單,但是不使用3維| V |×| V |×| V | 由於我們只讀取了先前的k值,因此使用二維向量。 因此,該算法實際上只是傳遞2D向量並生成新2 ...
[英]Apparent space leak in variant upon Brent's “teleporting turtle” algorithm
為了實現兩個不同數據結構的值比較,我一直在實現布倫特“傳送海龜”算法的一種變體,該算法映射到通過N樹的所有深度路徑上,並使用我自己的回溯算法來回滾循環,而不排除非循環路徑與循環路徑部分重疊。 從所有方面看,我的算法都是正確的(即使我覺得我應該實際證明這一點,即使我沒有任何代碼方面的背景知識), ...
[英]STUArray s i e - space leak only when i == Int?
我對以下剪切的行為感到困惑: 使用-O2編譯時,堆棧溢出(顯示正在使用的20M內存)。 令人困惑的部分是,如果進行以下任何更改,它實際上按預期工作(沒有堆棧溢出和9M內存正在使用中): Int64代替Int :(給出evalFib :: Int64 -> Int和STU ...
[英]Why does this code consume so much heap?
這是完整的存儲庫 。 這是一個非常簡單的測試,它使用PostgreSQL簡單數據庫綁定將500000個隨機事物插入數據庫。 它使用MonadRandom並可以延遲生成事物。 這是惰性的Thing生成器 。 這是case1和使用Thing生成器的特定代碼段: 這是case2 ...
[英]double stream feed to prevent unneeded memoization?
我是Haskell的新手,我正試圖以流處理方式實現Euler的Sieve。 當我查看關於素數的Haskell Wiki頁面時 ,我發現了一些神秘的流優化技術。 在3.8維基的線性合並中: 它說 “ 根據Melissa O'Neill的代碼,這里引入了雙素數反饋,以防止不 ...
[英]Irrefutable pattern does not leak memory in recursion, but why?
下面的代碼塊中的mapAndSum函數結合了map和sum (不要緊,在main函數中應用另一個sum ,它只是用於使輸出緊湊)。 map是懶惰地計算的,而sum是使用累積參數計算的。 我們的想法是,可以在沒有完整列表的情況下使用map的結果,並且(僅)之后可以“免費”獲得sum 。 ma ...