实际上,有时需要您编写一些自定义代码来实现某些功能,有两种可能的方法:
此时,我搞不懂哪一个代码库(在性能上)更好,只有幸运地找到了Objective方法的Time-Complexity,才能决定这一点。有没有办法知道这件事?
发布于 2016-01-06 22:17:31
在iOS (和其他苹果平台)的SDK中可以调用很多方法和函数,因此这个问题可能过于宽泛。
但是,对时间复杂性的讨论通常是关于算法复杂性的,因此我们可以将我们的范围限制在那些作为算法构建块的调用上,在这些调用中,我们将时间度量为输入大小的函数--也就是说,像集合操作之类的东西,而不是UIApplication registerForRemoteNotifications。
然而,总的来说,苹果并没有过多谈论Cocoa中高级数据结构的计算复杂性。这可能与Cocoa的设计目标非常倾向于封装有关,简单的接口隐藏了强大的、动态的、可能具有适应性的实现。研究CoreFoundation -- Cocoa的核心部分的开源实现,比如集合--就证明了这一点。这是一篇很棒的文章关于NSArray是如何有时是O(1),有时不是。
当然,对于一种哲学来说,你不应该关心你所使用的工具的复杂性--告诉它你想做什么,而不是你想怎么做,让它为你优化性能,因为它可以比你自己更好地猜测你。它符合避免过早优化的哲学。
另一方面,有一种哲学也有一定的意义,那就是拥有强制的、可预测的复杂性的基本构建块,这样您就可以更容易地规划从它们构建的算法的复杂性。为了表明苹果似乎两种方式都这么做,这似乎是选择斯威夫特标准图书馆的哲学。
https://stackoverflow.com/questions/34639748
复制相似问题