这个问题涉及 Go 和 C#,因此比较将处理当前的实现——我宁愿寻找理论证据,比如在最坏情况下的快速排序性能是......在许多专用于 Go 的地方,我看到一个函数返回一个元组,最后一个元素是一个错误代码。在 C# 中,它是TryXXX带有最后一个out参数的模式。现在我想知道哪一个表现更好(再一次,从理论的角度来看——这意味着如果你最多能实现它,结果会是什么)。也许是幼稚的想法,但是使用元组方法我看到内存分配问题,每次调用函数时都必须这样做,无论如何。使用out参数,您可以在函数外部分配内存,因此即使您调用函数数百万次,成本也为零(好吧,除了复制一些数据)。out那么应该是一个更好的表演者,对吗?或者有什么方法可以实现元组传递以匹配out?还是我完全错了?
1 回答
呼唤远方
TA贡献1856条经验 获得超11个赞
当前 Go 套件 (gc) 实现多个返回值的方式,返回值的传递方式与参数的传递方式相同,它们在堆栈上。那时没有内存分配(假设堆栈大小足够,这是另一回事)。考虑到需要分配 C# 中的 out 参数,我会说 Go 方法会更快,但不是因为方法本身,而是因为非原始数据类型在 C# 中是堆分配的,而在 Go 中是程序员可以选择将其保留在堆栈上。
如果我们简单地考虑参数传递与多个返回值,性能影响将不存在,因为两者都代表堆栈上的压入/弹出。
- 1 回答
- 0 关注
- 134 浏览
添加回答
举报
0/150
提交
取消