본문 바로가기
Go

Go - 숫자(int)를 문자열(string)로 변환 ( 함수 별 벤치마킹 )

by 맑은안개 2022. 9. 13.

int -> string 변환 방법

1. strconv.Itoa

package main

import (
    "fmt"
    "strconv"
)

func main() {
    var fruits [3]string

    fmt.Println(fruits, len(fruits))

    for i := 0; i < len(fruits); i++ {
        fruits[i] = strconv.Itoa(i)
        fmt.Println(i, fruits[i])
    }
}
  • 다른 변환 함수에 비해 제일 나은 성능을 보인다.

 

2. strconv.FormatInt

    for i := 0; i < len(fruits); i++ {
        fruits[i] = strconv.FormatInt(int64(i), 10)
        fmt.Println(i, fruits[i])
    }
  • 두 번째 인자는 10진수를 기본으로 하는 base 파라미터.
  • Itoa 성능과 비슷한 수준의 성능을 보인다.

 

3. fmt.Sprintf / Sprint

    for i := 0; i < len(fruits); i++ {
        fruits[i] = fmt.Sprintf("%d", i)
        fmt.Println(i, fruits[i])
    }
  • 위 두 함수에 비해 상대적으로 많은 성능차이를 보인다.
  • 아래 벤치마킹 결과에서 처럼, Sprint 함수는 변환 과정에서 객체할당 과정이 위 함수 보다 하나 더 많다.
BenchmarkItoa                           30000000           52.6 ns/op         2 B/op           1 allocs/op
BenchmarkItoaFormatInt                  30000000           52.5 ns/op         2 B/op           1 allocs/op
BenchmarkItoaSprint                     5000000            254 ns/op          16 B/op          2 allocs/op
BenchmarkItoaSprintf                    5000000            299 ns/op          16 B/op          2 allocs/op

출처: https://gist.github.com/evalphobia/caee1602969a640a4530

 

golang benchmark: String and Int conversions

golang benchmark: String and Int conversions. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

Reference

https://stackoverflow.com/questions/10105935/how-to-convert-an-int-value-to-string-in-go

반응형