ホームページ >バックエンド開発 >Golang >Golang で int32 を String に効率的に変換するには?

Golang で int32 を String に効率的に変換するには?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-03 12:25:02739ブラウズ

How to Efficiently Convert int32 to String in Golang?

Golang で int32 を string に変換する

Golang で int32 を string に変換することは、簡潔なソリューション fmt.Sprint(i) を使用して簡単に行うことができます。 。ただし、この直接的な方法では不十分な場合は、いくつかの変換オプションを使用できます。

  1. カスタム変換関数: これは、独自の変換関数を作成することを伴う最も速い方法です。
  2. fmt.Sprint(i): これはカスタム関数に比べて遅いアプローチですが、依然としてoption.
  3. strconv.Itoa(int(i)): fmt.Sprint(i) よりわずかに高速ですが、変換前に int32 を int に変換する必要があります。
  4. strconv.FormatInt(int64(i), 10): これはより高速なメソッドですint32 を int64 に直接変換し、次に string に変換するため、strconv.Itoa(int(i)) と比較します。

パフォーマンス ベンチマークは、カスタム変換関数 (String) が最も効率的であることを示し、次にカスタム変換関数 (String) が続きます。 strconv.FormatInt、strconv.Itoa、およびfmt.Sprint.

比較を示すコード スニペットは次のとおりです。

<code class="go">package main

import (
    "fmt"
    "strconv"
    "time"
)

func main() {
    var s string
    i := int32(-2147483648)
    t := time.Now()
    for j := 0; j < 50000000; j++ {
        s = String(i)
        //s = String2(i)  // Other conversion functions can be used here
    }
    fmt.Println(time.Since(t))
    fmt.Println(s)
}

func String(n int32) string {
    // Custom conversion function
    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:])
        }
    }
}</code>

最終的に、最良の選択は、アプリケーションの特定の要件とパフォーマンスの制約によって決まります。

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

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