我有一个大约 8000000 个 UTF-8 字符的字符串。通过扫描fmt.Scanf()
大约需要 10 秒,我怎样才能更快地完成它?我有一个 Cscanf()
函数的 Go 包装器,它是我的老师编写的,作为 Go 的 fmt.Scanf() 中的一些错误的解决方法,它可以在 1-2 秒内工作,但我不喜欢使用辅助包来完成这些简单的任务。你能推荐一些在纯 Go 中读取字符串的更快方法吗?
问问题
449 次
1 回答
6
找到了解决方案。bufio
工作得更快(因为它是缓冲的,而fmt
's 的功能不是,它不解析任何东西):
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
...甚至比 Cscanf()
包装器还要快。
于 2013-02-17T19:13:27.953 回答