Go-“无用“的优化-strconv.Atoi()

        strconv.Atoi() 将ASCLL 字符串中的数字转换为整数.这是Go标准库的一个基本函数.因此它肯定是得到很好的编码.并且经过多次优化.这里我们折腾下还有什么方式能够有所改进. 纯粹因为研究Go的不同用法.

        正文:

        我们看下 strconv.Atoi()的基准测试:

func BenchmarkAtoi(b *testing.B) {
	b.ReportAllocs()
	for i := 0; i < b.N; i++ {
		strconv.Atoi("12")
	}
}

 假如你的项目里大多数数字都是 2字节长度或4字节长度的话.或许可以这样处理字符串数字:

// 字符串 len == 2 的情况
func atoi2(in string) (int, error) {
	a, b := int(in[0]-'0'), int(in[1]-'0')
	if a < 0 || a > 9 || b < 0 || b > 9 {
		return 0, fmt.Errorf("can't parse number %q", in)
	}
	return a*10 + b, nil
}

// len == 4 的情况下
func atoi4(in string) (int, error) {
	a, b, c, d := int(in[0]-'0'), int(in[1]-'0'), int(
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值