パッケージメイン インポート( "試験" ) //第一种 FUNC BenchmarkMake(T * testing.B){ t.ResetTimer() 起源:= [] INT {1、2、3、4、5、6、7、8 、9、10} iについて:= 0; 私はテネシー州<; {iが++ :=([] INT、LEN(原点))を作る目標 =レンジ起源{:_、アイテムの アイテム= 6 {なら! 目標=アペンド(対象項目) } } } } //第二种 FUNC BenchmarkReuse (T * testing.B){ t.ResetTimer() 起源:= [] INT {1、2、3、4、5、6、7、8、9、10} iについて:= 0; 私はテネシー州<; 私は{++ =原点[:0]ターゲットを =範囲起源{:_、項目について !もしアイテム= 6 { 標的=アペンド(対象項目) } } } } //第三种 FUNC BenchmarkEditOne(T * testing.B){ t.ResetTimer() 起源:= [] INT {1、2、3、4、5、6、7、8、9、10} iについて:= 0; 私はテネシー州<; 私は{++ iについて:= 0; 私は、LEN <(原点); I ++ { 原点場合[I] == 6 { 原点=アペンド(原点[:i]は、原点[I + 1] ...) i--は//正しいインデックス維持する } } } } //を第四种 FUNC BenchmarkFuckさ(t *のtesting.B){ t.ResetTimer() 起源:= [] INT {1、2、3、4、5、6、7、8、9、10} iについて:= 0; 私はテネシー州<; I ++ { iについて:= 0; 私は、LEN <(原点); iは{++ 原点なら[I] == 6 { tempV:=原点[i]を 原点=アペンド((原点付加[:I]、原点[I + 1] tempV、...)を) // i-- / /正しいインデックスを維持します } } } }
コマンドを実行します。テストmain6_test.go -v -bench =を行きます。
出力:
E:\ go_work_dir \テスト\ x>はテストmain6_test.go -v -bench =を行きます。
GOOS:窓の
goarch:AMD64
BenchmarkMake-8千万146ナノ秒/ OP
/ OP BenchmarkReuse-8億10.9 NS
BenchmarkEditOne-8 200000000 7.69 / OP NS
BenchmarkFuck-8億13.4ナノ秒/オペアンプ
PASS
OKコマンドライン引数8.592s
オリジナル: