「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > GOタイプアサーションと他のタイプのチェック方法とのタイプスイッチングのパフォーマンス比較

GOタイプアサーションと他のタイプのチェック方法とのタイプスイッチングのパフォーマンス比較

2025-04-19に投稿されました
ブラウズ:647

How Do Go's Type Assertions and Type Switches Perform Compared to Other Type-Checking Methodologies?

タイプのアサーションとスイッチパフォーマンスは、プログラミング言語のgo

でのスイッチパフォーマンスであり、ランタイム中の変数またはオブジェクトのタイプを決定することは基本的な操作です。このプロセスを容易にするために、タイプアサーションとタイプスイッチを使用します。この記事では、これらの手法のパフォーマンス特性を掘り下げています。 GOプログラマーは、タイプアサーションまたはタイプスイッチが同様の非効率性を示すかどうかを熟考しています。これに対処するために、包括的なベンチマークを実行しましょう 輸入 ( 「FMT」 「テスト」 )) func question(Anything interface {}){ Switch V:= Anything。(タイプ){ ケース文字列: fmt.println(v) ケースINT32、INT64: fmt.println(v) ケースSomeCustomType: fmt.println(v) デフォルト: fmt.println( "不明") } }

サンプルコードは、タイプスイッチを使用して、入力変数のタイプを決定します。 輸入 ( 「テスト」 )) Myint int64と入力します Inccerインターフェイスを入力{ inc() } func(i *myint)inc(){ *i = *i 1 } func benchmarkintmethod(b *testing.b){ i:= new(myint) incnintmethod(i、b.n) } func benchmarkinterface(b *testing.b){ i:= new(myint) incninterface(i、b.n) } func benchmarktypeswitch(b *testing.b){ i:= new(myint) incnswitch(i、b.n) } func benchmarktypeassertion(b *testing.b){ i:= new(myint) incnassertion(i、b.n) } func incnintmethod(i *myint、n int){ k:= 0; k 複数のテストマシンでは、結果は、4つのメソッドすべてが同様の速度で実行されることを一貫して明らかにします:直接メソッド呼び出し、インターフェイス実装、タイプアサーション、およびタイプスイッチ。次の例は、これらの調査結果を示しています Benchmarkinterface-16 1000000000 2.03 NS/OP BenchmarkTypeswitch-16 2000000000 1.70 ns/op BenchmarkTyPeasSertion-16 20000000 1.67 NS/OP したがって、私たちの結論は、他のタイプのチェック方法論と比較した場合、GOのタイプのアサーションとタイプスイッチは顕著なパフォーマンスの排除をもたらさないということです。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3