C# 优化器是否执行复制省略?
Do C# optimizers perform copy elision?
我正在寻找优化一些 C# 代码的方法,我很好奇我的优化器是否会执行任何 copy elision, and if so which kinds. I haven't been able to find any information on this by googling. If not I may want to switch my methods to take struct arguments by reference. The environment I care about is Unity 3D, which is odd as it uses either the Mono 2.0 Runtime or Unity's IL2CPP transpiler(我可能应该直接询问他们,因为它是封闭源代码。)但是它了解 Microsoft 的优化器也会很有趣,以及标准是否通常允许这种类型的优化。
旁注:如果优化器不支持这一点,那么如果我能得到 C++ const ref 的等价物,那就太好了,but it appears this doesn't exist。
我可以代表 IL2CPP 发言,并说它不会通过引用获取结构参数。即使无法访问 IL2CPP 源代码,您也可以通过检查生成的 C++ 代码来了解这一点。
请注意,C# 结构由 C++ 结构表示,而 C++ 结构按值传递。我们已经讨论了在这种情况下使用 const 引用的可能性,但我们还没有实现(我们可能永远不会)。
我正在寻找优化一些 C# 代码的方法,我很好奇我的优化器是否会执行任何 copy elision, and if so which kinds. I haven't been able to find any information on this by googling. If not I may want to switch my methods to take struct arguments by reference. The environment I care about is Unity 3D, which is odd as it uses either the Mono 2.0 Runtime or Unity's IL2CPP transpiler(我可能应该直接询问他们,因为它是封闭源代码。)但是它了解 Microsoft 的优化器也会很有趣,以及标准是否通常允许这种类型的优化。
旁注:如果优化器不支持这一点,那么如果我能得到 C++ const ref 的等价物,那就太好了,but it appears this doesn't exist。
我可以代表 IL2CPP 发言,并说它不会通过引用获取结构参数。即使无法访问 IL2CPP 源代码,您也可以通过检查生成的 C++ 代码来了解这一点。
请注意,C# 结构由 C++ 结构表示,而 C++ 结构按值传递。我们已经讨论了在这种情况下使用 const 引用的可能性,但我们还没有实现(我们可能永远不会)。