代码之家  ›  专栏  ›  技术社区  ›  Sam

目标-c,.m/.m m性能差异?

  •  28
  • Sam  · 技术社区  · 16 年前

    在创建新类时,我倾向于在默认情况下使用.mm扩展名,以便在以后需要时使用objc++。

    这样做有什么缺点吗?你想什么时候 .m ?做 m 编译到一个更快的可执行文件(因为C通常比C++快)?

    2 回复  |  直到 14 年前
        1
  •  44
  •   Community Mohan Dere    9 年前

    使用的主要缺点 .mm 结束 .m 对于“正常”的目标-C,目标-C++的编译时间要高得多。这是因为C++编译器占用的时间比C编译器长。对于Xcode3.2及更高版本,Objective-C代码可以使用 Clang 前端工具链显著加快了Objective-C/C编译时间。由于Clang还没有支持Objut-C++/C++,这进一步拓宽了编译时之间的差距。

    更好的策略是使用 m 默认情况下。如果您在以后的开发中需要使用Objective-C++,将文件重命名为使用 毫米 延期。如果您在Xcode中这样做,项目将自动更新以使用新命名的文件。

    当然,一旦您尝试在运行时比较Objective-C++和Objective-C的性能,所有的标准警告都适用。ObjultC++是一个C++超集,ObjuleC是C超集,在处理时,你处理的是两种不同的语言,每种语言都有性能权衡。考虑到你使用ObjtoX,你很可能编写一个用户级的应用程序(而不是一个系统级的应用程序),C和C++之间的性能差异可能完全取决于你在每种语言中编写高效算法的能力。如果您是C++开发人员,您可能会比C代码更好,反之亦然。因此,一如既往地,为工作使用适当的工具。

    作为参考,您也可能对以下答案感兴趣: C vs C++ (Objective-C vs Objective-C++) for iPhone

    更新日期:2012年2月17日 从xcode 4.0(使用llvm 3.0)开始,clang支持objective-c++。即使是C++ 11的支持也相当强大。

        2
  •  8
  •   rpetrich    16 年前

    如果只使用C特性,.m m文件应该生成与.m非常相似的代码。

    当您希望C++特性时,将文件从.m改名为.mm也不会有坏处。