繁体   English   中英

Objective-C,.m / .mm的性能差异?

[英]Objective-C, .m / .mm performance difference?

在创建新类时,我倾向于默认使用.mm扩展名,以便我可以在以后使用ObjC ++。

这样做有什么不利吗? 你什么时候喜欢.m .m编译为更快的可执行文件(因为C通常比C ++快)?

对于“普通”Objective-C使用.mm不是.m的主要缺点是Objective-C ++的编译时间明显更高。 这是因为C ++编译器比C编译器花费更长的时间。 使用Xcode 3.2及更高版本,Objective-C代码可以使用Clang前端工具链来显着加快Objective-C / C编译时间。 由于Clang还不支持Objective-C ++ / C ++,这进一步扩大了两者之间编译时间的差距。

更好的策略是默认使用.m 如果您需要在开发后期使用Objective-C ++,则重命名文件以使用.mm扩展名没有任何害处。 如果是这样,那么在XCode中,项目将自动更新以使用新命名的文件。

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

作为参考,您可能也对此答案感兴趣: 适用于iPhone的C vs C ++(Objective-C vs Objective-C ++)

更新2012年2月17日从Xcode 4.0(使用LLVM 3.0)开始,Clang支持Objective-C ++。 即使是C ++ 11支持也非常强大。

如果您只使用C功能,.mm文件应生成与.m非常相似的代码

当您需要C ++功能时,将文件从.m重命名为.mm也没有任何缺点

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM