我正在制作一款使用nsstream与服务器通信的游戏,程序会响应流的命令类型(比如对手跳跃或射击)。如果我说20种不同类型的命令,会: 1)20个陈述(可疑) 2)一个开关 - 要么 3)与命令类型的键
对应的选择器的NSDictionary是响应流数据的最快方式吗?
for 2)我会说将整数作为命令类型传入并将数据转换为intValue并传入交换机吗?
和3)这会比开关更快,还是查找时间和转换会使它不那么快?
答案 0 :(得分:1)
一般来说,一个开关可以让您在这些选项中获得更好的性能。在大多数情况下,C系列编译器能够从switch语句构建一个“跳转表”,这使得它可以直接进入正确的情况,甚至无需进行条件评估。
但是要过早地进行优化。交换机不一定是实现您想要执行的操作的最易读,可扩展或可维护的方式 - 即使它可能是最佳性能。这个特定的序列甚至可能不是您应用程序性能的瓶颈。在选择实施时,您可能需要考虑其他这些因素。
答案 1 :(得分:1)
我已经进入游戏流很长一段时间了。在你提出的建议中,我相信
“2)我会说整数作为命令类型传递并转换 将数据转换为intValue并传入交换机“
将是最快的一个。