1
在Haskell的Data.Text.Encoding
中,假設其中一個呈現純粹的ASCII ByteString
,是decodeLatin1比decodeUtf8快得多嗎?直觀地看起來至少有一個機器指令給出了utf-8的性質(即對最高位進行測試)。我知道我可以做我自己的分析,但我認爲這可能已經完成了,所以我問。Data.Text中的解碼速度
在Haskell的Data.Text.Encoding
中,假設其中一個呈現純粹的ASCII ByteString
,是decodeLatin1比decodeUtf8快得多嗎?直觀地看起來至少有一個機器指令給出了utf-8的性質(即對最高位進行測試)。我知道我可以做我自己的分析,但我認爲這可能已經完成了,所以我問。Data.Text中的解碼速度
這是底層C代碼,文本庫在內部用於解碼器。具體功能_hs_text_decode_latin1
:
http://hackage.haskell.org/package/text-1.0.0.1/src/cbits/cbits.c
是decodeLatin1比decodeUtf8
非常快很多
這個問題的答案很簡單,它不應該的問題,您應該選擇,如果使用的latin1解碼器您需要使用現有的latin1文本數據。對於幾乎所有情況,其他任何內容都只是微型優化,text
庫已經非常嚴格優化。
您是否真的願意在文本技術時間裏回溯四十年來節省一些機器指令? –
我只是好奇而已。 –
UTF-8解碼器經常做的是他們使用位掩碼來檢查下一個例如8個字節沒有設置前導位。 – tibbe