许多IF声明与代表?

时间:2012-08-05 21:20:11

标签: c# performance if-statement delegates xna

性能一次又一次地使用if语句,或者使用它们一次并使用委托来根据IF语句的输出调用函数会更好吗?我想说答案显然是委托,但我不确定是否一遍又一遍地使用不同的方法比执行相同操作的许多IF语句更快或更慢。我希望我解释得对。

PS我需要知道的框架是XNA,如果重要的话。

2 个答案:

答案 0 :(得分:1)

你有自己的权衡。最好的答案已经评论过,那就是对两者进行分析,然后弄明白。 IF语句可能需要更多的CPU,因为它必须一次又一次地进行比较。另一方面,使用委托需要更多的内存,这是你需要保持的另一个对象。

我个人喜欢做的最好(如果适用,不知道问题的完整上下文)是将IF ELSE语句转换为switch-case。这对于状态机和其他重复过程非常有效,而且您可以消除IF所带来的所有分支。但是,这是假设您检查的值都在范围内相对接近,否则您将给编译器带来很多痛苦。

答案 1 :(得分:1)

这是一种有用的技术,当然。显然,只有少数if代表没有意义,因为它们代价高昂且CPU无法轻易预测分支目标。对于很多人而言,一次性初始化代表是有道理的。

目前尚不清楚盈亏平衡点在哪里。那个需要衡量。