gpt4 book ai didi

objective-c - 这有多糟糕?在 30 秒内分配了 3GB 总字节数

转载 作者:可可西里 更新时间:2023-11-01 06:19:01 25 4
gpt4 key购买 nike

在编写基于物理的游戏时,我从子类 NSObject 中创建了所有内容。力矢量存储在每个粒子对象的 NSArrays 中,然后使用 CADisplayLink 以 60fps 计算加速度、速度和位置。

第一个版本并没有被优化,但它似乎运行得很好。 CADisplayLink 快速且一致。但是,当我查看分配统计信息时...好吧,我从未见过这样的事情。 ARC 在将 Live Bytes 保持在 1 兆字节以下方面做得很好,但它正在通过每分钟 6 GB 的整体分配来粉碎。

所以我的问题是:

这段代码在设备上长时间运行是否危险?这有多“坏”?如果我继续这样开发,苹果会接受吗?还是我会炸掉 iPad?

enter image description here

最佳答案

优化以最小化分配吞吐量是一种非常有效的方法。

值得注意的是,每次分配都可能需要触及分配中的大部分字节,对于分配中的每个字节,可能需要进行一些写入和多次读取。所有这些读/写都需要 CPU 周期和跨系统总线的事务。

所以,是的,它会消耗电池并增加系统温度。但是,不太可能烧毁设备。 :)

按“#Transitory”排序并开始弄清楚如何消除临时分配。我通常最初会忽略各种 Malloc## Bytes 分配,因为它们通常是某些类实例中的后备存储。消除临时实例,mallocs 的数量也会下降。

对于任何给定的分配类型,您可以单击以查看创建该类型的所有分配的列表。按函数名称排序,然后了解最常用的函数。在那里进行优化。

使用这种方法,我已经能够大规模优化一些大型应用程序;有时通过简单地最小化分配率将某些操作的执行时间减少 75% 以上!

关于objective-c - 这有多糟糕?在 30 秒内分配了 3GB 总字节数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12663758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com