在观看了Developer Platform Drill Down之后,我想知道他所说的在云中编译是什么意思。他说所有的Windows Phone都将被编译。这是否意味着所有应用程序都将是 NGEN 的?它会包括更高级的 JITer 启发式方法吗?例如,在.Net CF 中,属性被解析为函数调用(无内联)。
2 回答
对此没有明确的答案,因为设备 + 操作系统和 SDK 都尚未公开。
正如 Kevin 所解释的,在云中编译意味着应用程序将被编译为机器代码(您很可能仍将在托管环境中工作),因此在实际设备上的性能要高得多。据我了解,开发者将无法访问云编译服务。一旦提交申请以供市场批准,这将是 Microsoft 完成的任务。
这个想法很简单。首先,输入 MDIL 或 Machine Dependent Intermediate Language 或 .NET 混合汇编语言。MDIL 就是尽可能地编译为本地汇编指令,并将其余的编译为伪指令,这些伪指令可以在手机上快速转换为本地指令。因此,这个包含伪指令和本机指令混合的程序集可以传送到设备(并且可以跨相同架构移植 - 例如,跨所有 ARM 设备),并且在设备上我们执行轻量级链接步骤以将整个程序集转换为本机映像。当我们将 IL 程序集编译为 IL 程序集和本机映像之间的中间文件时,大部分繁重的工作就完成了(这就是 MDIL)。
“那又怎样?”,你问。将 MDIL 程序集转换为本机映像的设备上的链接步骤只需要设备上传统 NGEN 的 1/5 时间。因此,我们获得了预编译(因为我们正在执行所有指令都是汇编指令的本机映像)和 JIT 编译(在框架更新期间在设备上没有大量编译)的一些好处。