引言
在go中应该有很多种方法来统计字符串中中文字符的个数。下面介绍两种方式,一种是使用正则表达式来匹配,需要使用 regexp 包;另一种是用标准库中 unicode 包自带的 unicode.Is 方法。这两种方式在使用时的性能如何,下面通过基准测试来比较一下。
1.两种方式的实现代码
2.两个基准测试函数
3.基准测试结果
从测试结果中,很明显可以看出,用go标准库中的 unicode.Is 方法的性能更好一些。
(1).在上图中,go test 命令涉及到的几个参数的说明:
-v 表示输出测试的详细信息
-run="none" 表示确保在执行指定的基准测试函数之前没有单元测试被运行
-bench=BenchmarkUseRegexp 表示要执行的基准测试函数
-benchmem 表示在测试结果中显示每次操作从堆上分配内存的次数,以及分配内存的字节数
-benchtime="3s" 表示测试持续执行的最短时间,默认是 1 秒
(2).在上图中,第一个测试输出结果中:
111145 表示总共执行 111145 次
31107 ns/op 表示每次操作耗费 31107 纳秒
19792 B/op 表示每次操作分配 19792B 的内存
251 allocs/op 表示每次操作在堆上分配内存的次数为 251 次