C# 在C语言中,哪一个性能更好
我很困惑何时使用开关来获得更好的性能。 这是我想比较的代码。 我想问你哪一个更好,因为我在50对象中使用这个脚本C# 在C语言中,哪一个性能更好,c#,unity3d,C#,Unity3d,我很困惑何时使用开关来获得更好的性能。 这是我想比较的代码。 我想问你哪一个更好,因为我在50对象中使用这个脚本 void FixedUpdate() { tabrakan(); } void tabrakan() { switch (ayam) { case 0: if(perubahan == 0) {
void FixedUpdate()
{
tabrakan();
}
void tabrakan()
{
switch (ayam)
{
case 0:
if(perubahan == 0)
{
transform.Translate(userDirection2 * movespeed * Time.fixedDeltaTime);
}
break;
case 1:
if(perubahan == 0)
{
transform.Translate(userDirection * movespeed * Time.fixedDeltaTime);
}
break;
}
}
vs
哪一个更好?最终,从性能的角度来看,这在99.9%的代码中并不重要,除非这是一个紧密的循环,而且所有其他东西都非常便宜。坦率地说,停止尝试微观优化,而是担心正确性,直到您有性能数据表明这是一个问题,基于真实的评测或基准测试 有趣的是,在许多情况下,切换稍微快一些,因为它是一个单跳而不是多个测试分支和跳,然而,这就像说: 如果我从纽约开车到波士顿,当我到达我要去的大楼时,哪个门会更快
没关系,这不是花时间的地方。Unity有一个分析器,不是吗?比赛你的马。然而,这种差异可以忽略不计。担心其他事情我看不出有什么区别这就是为什么im askingSwitch在某些情况下会更好,因为它在表上工作,虽然可能不是这种情况,但这取决于编译器如何实现。如果你看不出有什么不同,那么你就没有问题了。。。选择您的收藏夹switch语句通常比嵌套if语句编译器创建跳转表的效率更高,但正如Marc所述,差异非常小,最终您应该担心可读性。如果你的代码很慢,那不是因为你使用了If链而不是开关——如果你担心代码太快,检查你使用的算法以及它们的平均情况/最坏情况运行时间——这将是提高性能的更好方法
void FixedUpdate()
{
tabrakan();
}
void tabrakan()
{
if (ayam == 0 && perubahan == 0)
{
transform.Translate(userDirection2 * movespeed * Time.fixedDeltaTime);
}
else if (ayam == 1 && perubahan == 0)
{
transform.Translate(userDirection * movespeed * Time.fixedDeltaTime);
}
}