ホームページ  >  記事  >  バックエンド開発  >  Go で int32 を string に効率的に変換するにはどうすればよいですか?

Go で int32 を string に効率的に変換するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-30 10:01:02391ブラウズ

How to efficiently convert int32 to string in Go?

Go で int32 を String に変換する

さまざまなプログラミング シナリオで int32 を string に変換すると便利です。 Go では、この変換を実現する方法が複数あります。

簡単な解決策は、int32 値のデフォルト形式を利用する fmt.Sprint(i) を使用することです。ただし、この方法には内部変換が含まれるため、他のオプションと比べて速度が遅くなります。

カスタム変換関数

最適なパフォーマンスを得るには、カスタム変換関数を作成することを検討してください。

func String(n int32) string {
    buf := [11]byte{}
    pos := len(buf)
    i := int64(n)
    signed := i < 0
    if signed {
        i = -i
    }
    for {
        pos--
        buf[pos], i = '0'+byte(i%10), i/10
        if i == 0 {
            if signed {
                pos--
                buf[pos] = '-'
            }
            return string(buf[pos:])
        }
    }
}

この関数は、int32 値の文字列表現を反復的に構築するため、パフォーマンスが向上します。

strconv.Itoa を使用する

別のオプションは次のとおりです。 fmt.Sprint(i) に比べて高速なアプローチを提供する strconv.Itoa(int(i)) を利用します:

s := strconv.Itoa(int(i))

ただし、このメソッドでは int32 から int への中間変換が必要です。

strconv.FormatInt の使用

strconv.Itoa と同様に、strconv.FormatInt(int64(i), 10) は、int32 から文字列への変換のパフォーマンスの高いソリューションを提供します。 int32 から int64 への中間変換が必要ですが、fmt.Sprint(i) よりもパフォーマンスが向上しています。

s := strconv.FormatInt(int64(i), 10)

ベンチマーク比較

これらの変換でのベンチマークの実行

String:      5.5923198s
String2:     5.5923199s
strconv.Itoa: 5.9763418s
strconv.FormatInt:  5.9133382s
fmt.Sprint:  13.5697761s

結果から明らかなように、カスタム変換関数 (String) と String2 が最も速い変換時間を実現します。

最終的には、変換方法の選択によって決まります。アプリケーションの特定のパフォーマンス要件と複雑さの考慮事項について説明します。速度が重要なシナリオでは、カスタム変換関数が最適なソリューションを提供します。

以上がGo で int32 を string に効率的に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。