千家信息网

如何优化go性能

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇内容主要讲解"如何优化go性能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何优化go性能"吧!记录一下对核心处理逻辑的优化因为虚拟ip对应十进制数
千家信息网最后更新 2025年01月18日如何优化go性能

本篇内容主要讲解"如何优化go性能",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"如何优化go性能"吧!

记录一下对核心处理逻辑的优化

因为虚拟ip对应十进制数范围是168493058, 168558590,因此我们将其类型从int改成uint64,不改成uint32是为了好计算; 其次字符串拼接方法用string.Join,在最后,是用数组代替切片的场景

用切片存储字符串 join方法拼接字符串切片

// 对应的虚拟IP段是 10.11.0.2 10.11.255.253 最小和最大可以分配的虚拟IP对应的uint64const VIPMIN, VIPMAX uint64 = 168493058, 168558590var fieldMaps = [4]uint64{24, 16, 8, 0}// OctToVipArray 数组func OctToVipArray(vipOct uint64) (addr string) {        if vipOct < VIPMIN && vipOct > VIPMAX {                log.Fatal("传入错误十进制整数,检查是否所有虚拟IP都分配出去")                return        } else {                var vips [4]string                for index, value := range fieldMaps {                        vips[index] = strconv.FormatUint(vipOct>>value&0xff, 10)                }                return strings.Join(vips[:], ".")        }}

用数组存储字符串 join方法拼接字符串数组

// octToVipSlice 切片func OctToVipSlice(vipOct uint64) (addr string) {        if vipOct < VIPMIN && vipOct > VIPMAX {                log.Fatal("传入错误十进制整数,检查是否所有虚拟IP都分配出去")                return        } else {                var vips []string                for _, value := range fieldMaps {                        vips = append(vips, strconv.FormatUint(vipOct>>value&0xff, 10))                }                return strings.Join(vips, ".")        }}

基准测试

测试函数

// 基准测试func BenchmarkA(b *testing.B) {        b.ResetTimer()        for index := uint64(168507432); index <= uint64(168558590); index++ {                // 待测试方法                OctToVipArray(168493058)        }}func BenchmarkB(b *testing.B) {        b.ResetTimer()        for index := uint64(168507432); index <= uint64(168558590); index++ {                // 待测试方法                OctToVipSlice(168493058)        }}
# 测试Benchmark开头的go test -bench=Benchmark* -benchmem -run=none# 看cpu和内存 go test -bench=Benchmark* -benchmem -run=none  -memprofile memprofile.out -cpuprofile profile.out

测试截图

cpu

内存

用web端查看可视化结果

到此,相信大家对"如何优化go性能"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

0