分享两个在开发中需注意的小点

简介: 分享两个在开发中需注意的小点

文章目录:

  • 不要使用 + 和 fmt.Sprintf 操作字符串
  • +
  • fmt.Sprintf
  • bytes.NewBufferString
  • 对于固定字段的键值对,不要使用 map[string]interface{}
  • map[string]interface{}
  • 临时 Struct
  • 小结
  • 推荐阅读


不要使用 + 和 fmt.Sprintf 操作字符串

不要使用 +fmt.Sprintf 操作字符串,虽然很方便,但是真的很慢!

我们要使用 bytes.NewBufferString 进行处理。

基准测试如下:

+

func BenchmarkStringOperation1(b *testing.B)  {
 b.ResetTimer()
 str := ""
 for i := 0; i < b.N; i++ {
  str += "golang"
 }
}
// 输出
goos: darwin
goarch: amd64
pkg: demo/stringoperation
cpu: Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz
BenchmarkStringOperation1
BenchmarkStringOperation1-12       353318     114135 ns/op
PASS
Process finished with the exit code 0

fmt.Sprintf

func BenchmarkStringOperation2(b *testing.B)  {
 b.ResetTimer()
 str := ""
 for i := 0; i < b.N; i++ {
  str = fmt.Sprintf("%s%s", str, "golang")
 }
}
// 输出
goos: darwin
goarch: amd64
pkg: demo/stringoperation
cpu: Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz
BenchmarkStringOperation2
BenchmarkStringOperation2-12       280140     214098 ns/op
PASS
Process finished with the exit code 0

bytes.NewBufferString

func BenchmarkStringOperation3(b *testing.B)  {
 b.ResetTimer()
 strBuf := bytes.NewBufferString("")
 for i := 0; i < b.N; i++ {
  strBuf.WriteString("golang")
 }
}
// 输出
goos: darwin
goarch: amd64
pkg: demo/stringoperation
cpu: Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz
BenchmarkStringOperation3
BenchmarkStringOperation3-12     161292136          8.582 ns/op
PASS
Process finished with the exit code 0

对于固定字段的键值对,不要使用 map[string]interface{}

对于固定字段的键值对,不要使用 map[string]interface{}!

我们要使用临时 Struct

基准测试如下:

map[string]interface{}

func BenchmarkStructOperation1(b *testing.B) {
 b.ResetTimer()
 for i := 0; i < b.N; i++ {
  var demo = map[string]interface{}{}
  demo["Name"] = "Tom"
  demo["Age"] = 30
 }
}
// 输出
goos: darwin
goarch: amd64
pkg: demo/structoperation
cpu: Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz
BenchmarkStructOperation1
BenchmarkStructOperation1-12     43300134         27.97 ns/op
PASS
Process finished with the exit code 0

临时 Struct

func BenchmarkStructOperation2(b *testing.B) {
 b.ResetTimer()
 for i := 0; i < b.N; i++ {
  var demo struct {
   Name string
   Age  int
  }
  demo.Name = "Tom"
  demo.Age = 30
 }
}
// 输出
oos: darwin
goarch: amd64
pkg: demo/structoperation
cpu: Intel(R) Core(TM) i7-8700B CPU @ 3.20GHz
BenchmarkStructOperation2
BenchmarkStructOperation2-12     1000000000          0.2388 ns/op
PASS
Process finished with the exit code 0

小结

你有类似这样的注意点吗,欢迎留言~

目录
相关文章
|
Prometheus 监控 异构计算
阿里云容器服务GPU监控2.0基础篇3:监控NVIDIA XID错误
本系列相关文章:阿里云容器服务GPU监控2.0基础篇1:基本功能使用阿里云容器服务GPU监控2.0基础篇2:监控NVLINK带宽阿里云容器服务GPU监控2.0基础篇3:监控NVIDIA XID错误阿里云容器服务GPU监控2.0进阶篇1:剖析(Profiling)GPU使用情况必备知识阿里云容器服务GPU监控2.0进阶篇2:学会剖析(Profiling)GPU使用情况本篇文章将向您介绍如何使用GPU
8891 0
阿里云容器服务GPU监控2.0基础篇3:监控NVIDIA XID错误
|
存储 数据处理 数据库
深入了解达梦数据库的增删查改操作:从入门到精通
深入了解达梦数据库的增删查改操作:从入门到精通
1493 4
|
12月前
|
传感器 人工智能 物联网
《跨越架构鸿沟:分布式软总线实现设备通信大一统》
随着设备多样性增加,不同芯片架构(如X86、ARM、RISC-V)在通信中面临诸多障碍。分布式软总线技术应运而生,通过融合底层通信技术、协议货架适配和中间适配层,屏蔽硬件、操作系统及协议差异,实现高效统一通信。该技术已在智能家居与办公场景中展现价值,未来结合AI与新一代通信技术,将助力万物互联愿景的实现。
479 6
|
关系型数据库 分布式数据库 PolarDB
PolarDB开源数据库进阶课9 读写分离
本文介绍了如何配置读写分离工具pgpool-II for PolarDB,使应用程序能够透明地实现读写分离。
487 1
|
存储 编译器 C语言
【c++丨STL】vector的使用
本文介绍了C++ STL中的`vector`容器,包括其基本概念、主要接口及其使用方法。`vector`是一种动态数组,能够根据需要自动调整大小,提供了丰富的操作接口,如增删查改等。文章详细解释了`vector`的构造函数、赋值运算符、容量接口、迭代器接口、元素访问接口以及一些常用的增删操作函数。最后,还展示了如何使用`vector`创建字符串数组,体现了`vector`在实际编程中的灵活性和实用性。
869 5
|
自然语言处理 语音技术 开发者
如何利用 OpenVINO™ 部署 Qwen2 多模态模型
本文将分享如何利用 OpenVINO™ 工具套件在轻薄本上部署 Qwen2-Audio 以及 Qwen2-VL 多模态模型。
|
存储 缓存 数据库
别再用offset和limit分页了,性能太差!——探索高效分页技术
【8月更文挑战第27天】在Web开发领域,分页是处理大量数据展示时不可或缺的功能。然而,传统的基于offset和limit的分页方式,在数据量剧增时,其性能问题日益凸显。本文将深入探讨这一问题的根源,并介绍几种更为高效的分页策略,助力你的应用性能飞跃。
1264 0
|
API 开发者 Python
API接口:原理、实现及应用
本文详细介绍了API接口在现代软件开发中的重要性及其工作原理。API接口作为应用程序间通信的桥梁,通过预定义的方法和协议实现数据和服务的共享。文章首先解释了API接口的概念,接着通过Python Flask框架示例展示了API的设计与实现过程,并强调了安全性的重要性。最后,本文还讨论了API接口在Web服务和移动应用程序等领域的广泛应用场景。
|
存储 关系型数据库 MySQL
Python导入Excel数据到MySQL数据库
Python导入Excel数据到MySQL数据库
1206 1
|
缓存 Linux 开发工具
centos设置ntp服务同步目标服务器时间
【7 月更文挑战第 1天】linux+centos设置ntp服务同步目标服务器时间

热门文章

最新文章