代码之家  ›  专栏  ›  技术社区  ›  Chandan Shetty SP

NSMutableArray与堆栈

  •  1
  • Chandan Shetty SP  · 技术社区  · 15 年前

    @interface CarElement : NSObject
    {
      std::stack<myElement*> *mBats;
    }
    

    @interface CarElement : NSObject
    {
      NSMutableArray *mBats;
    }
    

    谢谢,

    2 回复  |  直到 15 年前
        1
  •  7
  •   TechZen    14 年前

    人们普遍认为Objto-C在大多数情况下比C++更慢。

    Objective-C最大的优点是灵活性和重用性。创建这种灵活性的运行时链接会带来相当大的开销。

    另一方面,对于数组,这种开销通常很小。在LIFO堆栈的情况下,Objy-C和C++之间不会有任何性能差异,因为代码不必扫描整个数组,而只需要扫描第一个元素。除非您的数组操作非常复杂,并且数组非常大(例如10K+对象),否则您可能不会看到任何显著的性能差异。

    我的建议是用一些你想在应用程序中操作的类型的虚拟数据进行测试运行。将数组加载到超出预期的最大大小,然后循环大量操作 测量 时间和记忆的使用。看看C++的性能增益是否证明额外的DEV时间和复杂性税值得性能增益。

    还记得吗 过早的优化是万恶之源 . 不要把时间花在预防一个你甚至没有遇到的问题上。默认为最简单的解决方案,除非您有良好的 仅仅怀疑是不够的。

        2
  •  4
  •   JeremyP    15 年前

    我会使用NSMutableArray,不是因为它更快(可能不会),而是因为它在Objective-C的上下文中更容易。如果您使用std::stack,您将不得不在内存管理中添加一些内容。