我知道Data.Text
比String = [Char]
更有效地存儲字符串數據。不過,我在圖書館看到的一些函數似乎期望傳遞給他們一個String
。 Char
的鏈表似乎效率低下,因爲指針會佔用比字符串本身更多的空間。除了列表融合(這可能並不總是可能的),GHC是否對[Char]
的存儲進行了優化,並且它是否將類似的原則應用於其他列表?GHC:Haskell字符串優化
4
A
回答
5
之所以所有的基本庫函數使用String
,而不是一個更有效的類型是需要Text
的文本庫不是基礎庫的一部分。但是,文本庫提供了各種輸入/輸出功能的變體。你可以在Data.Text.IO
找到它們。
另請注意,對於高效的I/O,您通常會使用像導管,迭代或管道之類的現代抽象技術之一。
2
在GHC下,String
在平均情況下使用5 words per code point。但是,這可以通過運行時預先分配ASCII範圍中的字符來緩解。
-1
Here就是答案。
字節串的是有點像列表,只有每個元素的大小是一個字節(或8位)。他們處理懶惰的方式也不同。
+0
ByteStrings表示可以表示任何類型數據的字節序列,而String和Text則用於Unicode文本。他們是兩個不同的東西。 – AardvarkSoup 2012-08-05 20:00:20
相關問題
- 1. 字符串串聯優化
- 2. std ::字符串優化?
- 3. Java字符串優化
- 4. C++字符串對字符串文字不夠優化
- 5. 優化查找字符串數組中最寬的字符串?
- 6. C++字符串內存重用優化
- 7. 優化:Python字符串重複
- 8. Python中的字符串覆蓋優化
- 9. 字符串替換方法的優化
- 10. 如何優化N個字符串
- 11. 字符串比較的並行優化
- 12. F#字符串操作的優化
- 13. 優化代碼。搜索字符串
- 14. jQuery包含多個字符串優化
- 15. 優化字符串。替換方法
- 16. Python字符串和內存優化
- 17. Java編譯器優化的字符串
- 18. 優化PHP字符串連接
- 19. 按字符串優化分組
- 20. 我想優化的參數字符串
- 21. 大字符串優化C/C++
- 22. 優化字符串搜索Oracle查詢
- 23. 優化字符串生成和測試
- 24. 爲IE6優化字符串代碼
- 25. gcc沒有小字符串優化?
- 26. 優化數百萬字符*到字符串轉換
- 27. 需要在字符串中格式化字符優先級
- 28. 查找字符優化
- 29. 如何優化連字符
- 30. 由於編譯器優化而無法本地化字符串?
我懷疑有太多的字符串特定的優化 - 看起來你可以做的任何事情來改善一個字符列表也可以做到的Ints列表或任何你想要的。 – 2012-07-31 04:03:33