快速扫描大型UTF-8字符串

And*_*eev 1 performance input go

我有一个大约8000000 UTF-8字符的字符串.通过扫描fmt.Scanf()大约需要10秒钟,我怎样才能更快地完成?我有一个用于C scanf()函数的Go包装器,由我的老师编写,作为Go的fmt.Scanf()中的一些错误的解决方法,它在1-2秒内工作,但我不喜欢使用side包来完成这么简单的任务.你能建议一些更快的方式来阅读纯Go中的字符串吗?

And*_*eev 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
Run Code Online (Sandbox Code Playgroud)

......比C scanf()包装器更快.