在字符串中統計中文字符個數的兩種實現方式的性能比較

引言

  在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 次​


分享到:


相關文章: