Ber*_*lor 1 optimization performance ios sprite-kit
在这里,我正在优化我的sprite-kit代码,试图测试我的游戏引擎的界限.
使用仪器时间分析我修复了我自己的大部分问题,现在是唯一的瓶颈
37.0ms 66.0% 0,0 -[SKTextureAtlas textureNamed:]
Run Code Online (Sandbox Code Playgroud)
(我的游戏每半秒从TextureAtlases加载很多精灵)奇怪的是,似乎在我的大多数测试中,似乎纯粹的NSString比较名称导致上面三分之一以上的工作方法.子树:
15.0ms 26.7% 0,0 -[NSString caseInsensitiveCompare:]
15.0ms 26.7% 0,0 -[NSString compare:options:range:]
15.0ms 26.7% 0,0 -[NSString compare:options:range:locale:]
15.0ms 26.7% 6,0 CFStringCompareWithOptionsAndLocale
Run Code Online (Sandbox Code Playgroud)
对于性能如此重要的东西,苹果提供的字符串比较真的很糟糕吗?为什么它们不能提供更简单的方法来访问地图集中的纹理,我们这里不需要花哨的字符串,它可以通过int迭代我们所关心的.
有这方面的比较经验吗?
Lea*_*s2D 10
是的,避免textureNamed:在游戏运行时(经常)使用.即使使用预加载的纹理,也需要花费一些时间来累积.
而是在单个ivars或NSArray或NSDictionary ivars中本地(在使用它们的类中)缓存所需的纹理.