Go 言語の時刻型の場合、time.Time は絶対的な時点を表し、8 バイトのメモリを占有し、イベントが発生した時刻を記録するためによく使用されます。 time.Duration は時間間隔を表し、8 バイトのメモリを占有し、時差の計算によく使用されます。パフォーマンスの点では、time.Time にはタイム ゾーンとナノ秒の部分が含まれているため、time.Time は time.Duration よりもコストが高くなります。実際の戦闘では、time.Duration を time.time の代わりに使用して、パフォーマンスを最適化し、より正確な時間測定結果を得ることができます。
Go 言語のチューニング: パフォーマンスの最適化のために知っておくべき T と t
#Go 言語では、変数の型パフォーマンスに直接影響します。時間タイプには、time.Time と
time.Duration の 2 つの異なるタイプがあります。パフォーマンスを最適化するには、この 2 つの違いを理解することが重要です。
Time.Time
Time.Duration
パフォーマンスの違い
パフォーマンスの点では、time.Time は
time.Duration## よりもオーバーヘッドが大きくなります。 # 。これは、time.Time
には時間値だけでなくタイムゾーンとナノ秒のコンポーネントも含まれるのに対し、time.Duration
には時間間隔のみが含まれるためです。
次のコード スニペットを考えてみましょう:
func main() { t1 := time.Now() time.Sleep(100 * time.Millisecond) t2 := time.Now() elapsed := t2.Sub(t1) }
このコードでは、
time.Time を使用して測定します。 100 ミリ秒のスリープ期間。ただし、この測定は、time.Time
オーバーヘッドにより影響を受ける可能性があります。 パフォーマンスを向上させるために、以下に示すように、代わりに
を使用できます。 <pre class='brush:go;toolbar:false;'>func main() {
start := time.Now()
time.Sleep(100 * time.Millisecond)
elapsed := time.Since(start)
}</pre>
を使用すると、# を回避できます。 ##time.Time オーバーヘッドにより、より正確な測定結果が得られます。
以上がGo 言語のチューニング: T と t、パフォーマンスの最適化について知っておくべきことの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。