В этой статье мы собираемся проверить производительность этих методов, какой метод является быстрым, а какой самым медленным для преобразования Int в String в Golang, и как мы собираемся это сделать, мы собираемся проверить результаты тестов каждого метод для двух значений: одно — низкое, а второе — высокое, 45 (маленькое) и 8976497664 (большое) вроде чего-то.

Ниже приведен тестовый код, и в этом коде все три способа разделены на отдельные функции.

Код хранится в файле main_test.go

package main

import (
    "fmt"
    "strconv"
    "testing"
)

var smallInt = 40
var bigInt = 999999999999999

func Itoa(s int) string {
    i := strconv.Itoa(s)
    return i
}

func FormatInt(s int) string {
    i := strconv.FormatInt(int64(s), 10)
    return i
}

func Sprintf(s int) string {
    i := fmt.Sprintf("%d", s)
    return i
}

func BenchmarkItoa(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Itoa(smallInt)
    }
}

func BenchmarkFormatInt(b *testing.B) {
    for i := 0; i < b.N; i++ {
        FormatInt(smallInt)
    }
}

func BenchmarkSprintf(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Sprintf(smallInt)
    }
}

func BenchmarkItoaBig(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Itoa(bigInt)
    }
}

func BenchmarkFormatIntBig(b *testing.B) {
    for i := 0; i < b.N; i++ {
        FormatInt(bigInt)
    }
}

func BenchmarkSprintfBig(b *testing.B) {
    for i := 0; i < b.N; i++ {
        Sprintf(bigInt)
    }
}
Войти в полноэкранный режим

Выйти из полноэкранного режима

У нас есть маленькийInt а также большойInt переменная, которая имеет соответствующие значения, а также у нас есть три функции, как указано выше утонул, ФорматIntа также Спринтф в котором мы просто пытаемся преобразовать предоставленное значение int в строку и вернуть обратно нить.
Если вы посмотрите на код, у нас есть две функции для каждого теста, потому что мы хотим протестировать эти функции для малых и больших значений.

Теперь давайте посмотрим на результаты этих выходов, и вы узнаете, что работает быстрее по сравнению с другими.

int в строку golang

Как вы видете fmt.Спринт это самый медленный способ преобразования маленьких и больших целых чисел в строку, а с другой стороны strconv.FormatInt это самый быстрый способ преобразовать int в строку, strconv, Утопленник это второй самый быстрый способ почти рядом с strconv.FormatInt.

Итак, докажите, что для малого или большого всегда используйте strconv.FormatInt или же strconv.Утопленниквместо использования fmt.Sprintf.

Теперь одна вещь приходит на ум, почему fmt.Sprintf не быстр, как другие, потому что fmt.Sprintf() использует пакет отражения, а пакет отражения работает во время выполнения, что делает его медленнее, чем strconv.Choke() а также strconv.FormatInt() функции

Эта статья изначально размещена на программированиеeeksclub.com

Мой личный сайт блога: Клуб программистов
Моя страница в Фейсбуке: Клуб программистов
Мой канал в телеграмме: Клуб программистов
Мой аккаунт в Твиттере: Кулдип Сингх
Мой канал на ютубе: Клуб программистов