2014-01-11 15 views
1

在Haskell的Data.Text.Encoding中,假設其中一個呈現純粹的ASCII ByteString,是decodeLatin1比decodeUtf8快得多嗎?直觀地看起來至少有一個機器指令給出了utf-8的性質(即對最高位進行測試)。我知道我可以做我自己的分析,但我認爲這可能已經完成了,所以我問。Data.Text中的解碼速度

+5

您是否真的願意在文本技術時間裏回溯四十年來節省一些機器指令? –

+0

我只是好奇而已。 –

+1

UTF-8解碼器經常做的是他們使用位掩碼來檢查下一個例如8個字節沒有設置前導位。 – tibbe

回答

1

這是底層C代碼,文本庫在內部用於解碼器。具體功能_hs_text_decode_latin1

http://hackage.haskell.org/package/text-1.0.0.1/src/cbits/cbits.c

是decodeLatin1比decodeUtf8

非常快很多

這個問題的答案很簡單,它不應該的問題,您應該選擇,如果使用的latin1解碼器您需要使用現有的latin1文本數據。對於幾乎所有情況,其他任何內容都只是微型優化,text庫已經非常嚴格優化。