我有一個大約8000000個UTF-8字符的字符串。通過fmt.Scanf()
掃描大概需要10秒鐘,我該如何做得更快?我爲我的老師編寫的C scanf()
函數提供了一個Go包裝函數,作爲Go的fmt.Scanf()中的一些錯誤的解決方法,它在1-2秒內工作,但我不喜歡使用邊軟件包執行此類簡單任務。你能提出一些更快的方式來閱讀純Go中的字符串嗎?快速掃描一個大的UTF-8字符串
1
A
回答
6
找到解決方案。 bufio
工作更快(因爲它的緩衝,並fmt
的功能都沒有,它不分析什麼):
reader := bufio.NewReader(os.Stdin)
str, _ := reader.ReadString('\n') // Like fmt.Scanf("%s", &str), but faster
var x, y rune
fmt.Fscanf(reader, "%c %c", &x, &y) // I need to read something else
// (see comments for the question)
// It's easy, as I can use fmt.Fscanf
...甚至更快即是c scanf()
包裝。
相關問題
- 1. 掃描到字符串
- 2. Javascript字符串掃描儀?
- 3. 錯誤掃描字符串
- 4. 逐行掃描字符串
- 5. 掃描字符串格式
- 6. 「掃描字符串文字時的EOL」
- 7. 的Python - 製作一個快速端口掃描器
- 8. 掃描單個字符C
- 9. 試圖掃描已經掃描的文件中的一行字符串
- 10. 在Angularjs中掃描DOM的字符串
- 11. c中的掃描字符串
- 12. Java:掃描字符串的模式
- 13. java掃描器字符串的比較
- 14. 掃描字符串的ASCII值
- 15. 掃描輸入的字符串
- 16. 帶掃描器的字符串輸入
- 17. 如何在柔性掃描儀中掃描「字符串」常量?
- 18. ANTLR:Unicode字符掃描
- 19. 查找字符串快速
- 20. 掃描一個字符串和替換鏈接
- 21. 掃描一個字符串,並在打印後立即
- 22. 如何在C++中掃描字符串
- 23. NSScanner從結尾掃描字符串
- 24. 店字符串中使用掃描儀
- 25. 掃描儀對字符串和int
- 26. Java掃描器更改字符串
- 27. 用逗號掃描字符串
- 28. 比較掃描儀到字符串
- 29. 替換字符串java掃描儀類
- 30. 掃描儀對象 - 分割字符串
你在做什麼樣的掃描?尋找特定類型的號碼?如果你想要快點,那麼知道具體問題是很好的 - 否則堅持一些普遍的,並證明。 – Floris 2013-02-17 18:38:46
@弗洛伊斯我正在掃描的是「%s%c%c」。我要遍歷讀取字符串的符文,但我必須知道預先提供的那兩個字符。所以我必須掃描該字符串並將其存儲到內存中。 – 2013-02-17 18:45:17