我有一个大约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