對於所有可能的操作,顯然Seq
漸近地執行與[]
相同或更好。但是由於其結構比列表更復雜,對於小尺寸的系統而言,其不斷的開銷可能會使其變慢。我想知道有多少,特別是:Data.Sequence.Seq與[]相比有多快?
- 被
<|
相比:
慢多少? - 摺疊/穿越
Seq
與摺疊/穿越[]
(不包括摺疊/穿越功能的成本)相比,要慢多少? \xs x -> xs ++ [x]
變得比|>
慢什麼尺寸(大約)?++
變得慢於><
的尺寸(大約)是多少?- 與列表中的模式匹配相比,調用
viewl
和結果上的模式匹配的成本是多少? n
-elementSeq
佔用多少內存相比n
-lelement list? (不計算由元素,只有結構所佔用的內存。)
我知道這是很難衡量,因爲與Seq
我們談論攤銷複雜,但我想知道至少有一些粗略的數據。
沒有這樣的比較存在。我建議使用標準基準庫自己生成它。 – 2013-02-10 14:35:20
如果有人最終決定在這個基準上進行基準測試,那麼爲了比較而放入一個「Vector」也是很有意義的。會很高興看到結果。收藏這個。 – 2013-02-10 14:38:04
由於在真實代碼中使用GHC,中間列表往往會融合並重寫並消失,這使得它們更像控制結構而不是數據結構本身,這也很困難(或不是特別有用)。 – jberryman 2013-02-10 21:51:27