【问题标题】:Why does C# and Java compile JustInTime instead of compling everything once first run/installed? [duplicate]为什么 C# 和 Java 会及时编译,而不是在第一次运行/安装后编译所有内容? [复制]
【发布时间】:2014-08-03 23:21:02
【问题描述】:

似乎您可以在某些应用程序安装过程中将字节码编译为本机,而不会丢失跨平台问题。

安装不一定意味着 GUI 安装。这可以选择只是在第一次运行可执行文件时发生的静默过程。 (有或没有图形进程栏)

这对于语言的开发人员来说(我认为)会容易得多,并且会产生更快的可执行文件,而不会失去对当前机器的适应性。

【问题讨论】:

标签: java c#


【解决方案1】:

JIT 编译使代码在运行时比使用解释器快得多,但初始成本可能过高,具体取决于正在执行的操作。

【讨论】:

    【解决方案2】:

    类似的事情确实在幕后发生(至少对于 .NET)。 NGen 可以本机图像缓存中缓存本机图像,这样您的代码就不必在该机器上再次编译。

    Ngen.exe 创建本机映像,这些文件包含已编译的特定于处理器的机器代码,并将它们安装到本地计算机上的本机映像缓存中。运行时可以使用缓存中的本机图像,而不是使用即时 (JIT) 编译器来编译原始程序集。

    【讨论】:

    • 我不是在问如何做到这一点。我在问为什么设计师一开始就选择了这个,而这似乎要困难得多
    • 您问“为什么 C# 和 Java 编译 JustInTime 而不是在第一次运行/安装后编译所有内容?”,我的回答是“这个问题没有实际意义,因为代码 编译一次,当你第一次运行它时”。
    • 我很确定即使在第二次运行中 JIT 仍在工作。
    猜你喜欢
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 2016-01-21
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2023-03-22
    相关资源
    最近更新 更多