高性能Objective C对象的Switch语句的替代方案

时间:2011-11-17 02:19:09

标签: objective-c performance nsstring switch-statement

我有一个函数,我想在NSString和一个int参数中使用,然后使用switch语句返回一个计算值,就像将int乘以某个常量一样,具体取决于提供的NSString。

显然,switch语句不适用于Objective-C中的对象。那么最快的选择是什么?是if-else语句吗?还是有更优雅的方法?

修改

我关心性能的原因是我正在修改用户正在观看的UI元素,这是这些计算的最终结果,我不希望它感到迟钝。

2 个答案:

答案 0 :(得分:15)

不要过早优化。只需创建一个NSDictionary,将每个字符串映射到其乘数。然后看看它是否足够快。

如果您需要根据字符串执行不同的操作,请将字典中的每个值设置为执行相应操作的块。

答案 1 :(得分:3)

  

我关心性能的原因是我正在修改UI   用户正在观看的元素是这些元素的最终结果   计算,我不希望它感到迟钝。

所以...你正在做一堆GUI操作,涉及重新布局和重新绘制一堆东西,你担心if / else语句的性能吗?

应用中的图形操作是巨大的 CPU周期消费者。与绘制objectForKey:和调用hash(这是字典查找所暗示的)相比,在绘制期间响应图形更改将消耗更多周期的订单。

衡量应用的效果。弄清楚它为何缓慢。然后解决问题。

第一步是使用CPU采样仪器查看这些周期的进展情况。

如果这没有帮助,请使用各种图形性能分析工具之一,看看这是否是您的瓶颈。

很容易就是你多次做某事只需要做一次;也许你的用户交互跟踪代码导致UI只需要完成一次就重新布局(我只是在我正在处理的app中解决了这种性能问题)。