我有一个函数,我想在NSString和一个int参数中使用,然后使用switch语句返回一个计算值,就像将int乘以某个常量一样,具体取决于提供的NSString。
显然,switch语句不适用于Objective-C中的对象。那么最快的选择是什么?是if-else语句吗?还是有更优雅的方法?
修改
我关心性能的原因是我正在修改用户正在观看的UI元素,这是这些计算的最终结果,我不希望它感到迟钝。
答案 0 :(得分:15)
不要过早优化。只需创建一个NSDictionary,将每个字符串映射到其乘数。然后看看它是否足够快。
如果您需要根据字符串执行不同的操作,请将字典中的每个值设置为执行相应操作的块。
答案 1 :(得分:3)
我关心性能的原因是我正在修改UI 用户正在观看的元素是这些元素的最终结果 计算,我不希望它感到迟钝。
所以...你正在做一堆GUI操作,涉及重新布局和重新绘制一堆东西,你担心if / else语句的性能吗?
应用中的图形操作是巨大的 CPU周期消费者。与绘制objectForKey:
和调用hash
(这是字典查找所暗示的)相比,在绘制期间响应图形更改将消耗更多周期的订单。
衡量应用的效果。弄清楚它为何缓慢。然后解决问题。
第一步是使用CPU采样仪器查看这些周期的进展情况。
如果这没有帮助,请使用各种图形性能分析工具之一,看看这是否是您的瓶颈。
很容易就是你多次做某事只需要做一次;也许你的用户交互跟踪代码导致UI只需要完成一次就重新布局(我只是在我正在处理的app中解决了这种性能问题)。