golang-int-to-string-Benchmark

golang中把int转成string的方式有很多,最常见的莫过于如下形式:

package main

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

func convert() {
    a := 10.6
    _ = fmt.Sprint(a)
}

func convert2() {
    var a uint64 = 11
    _ = strconv.FormatUint(a, 10)
    //fmt.Println("b is ", b)
}

下面对两种方式的性能做个对比

func BenchmarkHello(t *testing.B) {
    t.Run("convert", func(b *testing.B) {
        for i := 0; i < t.N; i++ {
            convert()
        }
    })

    t.Run("convert2", func(b *testing.B) {
        for i := 0; i < t.N; i++ {
            convert2()
        }
    })

}

启动用例后对比结果如下: goos: darwin goarch: arm64 BenchmarkHello BenchmarkHello/convert BenchmarkHello/convert-8 1000000000 0.0000016 ns/op BenchmarkHello/convert2 BenchmarkHello/convert2-8 1000000000 0.0000000 ns/op PASS

通过对比发现 strconv的方式明显比fmt.Sprint 形式要快,因此我们在做大量数据类型转换时候要用strconv

本文链接:参与评论 »

--EOF--

提醒:本文最后更新于 472 天前,文中所描述的信息可能已发生改变,请谨慎使用。

Comments