基础类型与自定义类型互转在大量迭代场景下是否存在性能损耗?
结论:这类类型转换完全不会带来性能负面影响
在Go语言中,你定义的MyStringType、MyInt64Type这类基于基础类型的自定义类型,和对应的基础类型共享完全相同的内存布局。这种类型转换是编译期完成的静态操作,不会产生任何运行时开销——既不会复制数据,也不会额外分配内存,更不会有计算损耗。
拿你的代码举例:
B.MyStringType(string_var)只是告诉编译器把string_var这个字符串值,当作MyStringType类型来处理,底层数据没有任何变化;string(B.StringVar)同理,只是把自定义类型的标识去掉,直接使用底层的字符串值。
别说数千次迭代,就算是百万、千万次的循环操作,这类转换也不会成为性能瓶颈。Go的编译器会直接把这类转换优化成和基础类型操作完全一致的机器码,不会有任何额外负担。
内容的提问来源于stack exchange,提问作者Oscar Zarrus
相关产品推荐
相关产品推荐

