一般回答
MvvmCross 关于性能的理念是:
- 我们让开发更方便,让开发者可以做出更有趣的应用程序
- 我们知道平台的某些部分确实会增加一定程度的开销 - 但我们已经努力确保它不是一个大的
- 我们为开发人员提供了构建解耦视图、视图模型和组件的工具——我们认为这允许开发人员编写更高效、更健壮的组件
- 因为我们允许开发人员构建解耦的组件,然后如果/当他们遇到性能问题,那么我们相信这使他们更有能力在他们需要的时间和地点进行优化。
- 因为我们提供了一个可重用的平台,我们相信开发人员将更有能力开发和使用更好的组件 - 例如,因为开发人员可以重用我们的表格/列表适配器,他们不必在每个应用程序中修复和优化新的表格/列表适配器
- 我们努力确保平台中的几乎所有内容都可以被覆盖,以便您以后可以在需要时进行优化 - 如果您的应用程序想要手动调整 IoC 注册它可以 - 您的应用程序不必使用反射。
- 我们认为 .Net(Microsoft 和 Mono 版本)还有助于通过以下方式提高应用程序的性能:
- 高效的内存管理
- 像 linq 和 TPL 这样的库
- TPL 与编译器工具(如 await/async)相结合
- 在需要时通过 PInvoke 提供本机访问
当然,如果你绝对需要达到小于 200kB 的包大小限制,你将无法使用 MvvmCross;当然,即使使用世界上最好的工具,开发人员仍然可以制作性能不佳的应用程序……但我们将 MvvmCross 定位为帮助优秀的开发人员制作令人愉快的跨平台应用程序。
技术要点
有限的处理器能力
现代移动平台具有:
- 2 到 8 个 CPU 内核,每个内核运行频率 > 1GHz
- 1+GB 快速 RAM
- 16+GB 非常快的存储空间(闪存)
这几乎没有限制——它比 10 年前的 PC 更快、更强大。
每个人......都知道反射是性能的“邪恶”
对不起 - 我不认为你是正确的。
与我一起工作的人都知道反射引入了一个小的开销,但它并没有支配我们的性能考虑。
我更同意Donald Knuth的说法:
“我们应该忘记小的效率,比如大约 97% 的时间:过早的优化是万恶之源”
来自http://en.wikipedia.org/wiki/Program_optimization
在具有许多版本的应用程序/项目/产品中尤其如此 - 在紧密耦合的项目中,为 v1 创建的小型优化通常会在您达到 v10 或 v11 时导致严重的性能问题,其中平台的更改会导致“旧代码”以“新模式”执行。
如果有人真的喜欢微优化,那么还值得注意的是,MvvmCross 使用了许多标记为虚拟的方法、许多小接口/对象以及使用“{0}{1}”类型模式的字符串格式——所有这些都可以如果有人真的想优化。