当前位置: 首页 > 面试题库 >

什么是Java编译器中的常量折叠?

苏华荣
2023-03-14
问题内容

嗨,我遇到过Java编译器使用了称为Constant Folding的东西。这是什么?以及如何影响?


问题答案:

常量折叠是编译器在其中查找包含编译时常量的表达式并将其替换为结果的地方,可有效删除多余的运行时计算。

// code
static final int a = 2;
int b = 30 * a;

// folding would create
int b = 60;


 类似资料:
  • 问题内容: 我发现Java支持原始类型的常量折叠,但是s呢? 例 如果我创建以下源代码 编译后的代码有什么内容? 组合版? 还是效率较低的运行时串联版本? 问题答案: 这是一个简单的测试: 输出: 因此,是的,编译器将折叠。

  • 主要内容:什么是编译器,什么是集成开发环境,选择哪种集成开发环境我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为 可执行程序(Executable Program)。在 Windows 下,可执行程序的后缀有 .exe 和 .com(其中 .exe 比较常见);在类 UNIX 系统(Linux、Mac OS 等)下,可执行程序没有特定的后缀,系统根据文件的头部信息来判断是否是可执行程序。 可执行程序的内部是一系列计算机指令和数据的集合,它们

  • 本文向大家介绍什么是ElasticSearch中的编译器?相关面试题,主要包含被问及什么是ElasticSearch中的编译器?时的应答技巧和注意事项,需要的朋友参考一下 编译器用于将字符串分解为术语或标记流。一个简单的编译器可能会将字符串拆分为任何遇到空格或标点的地方。Elasticsearch有许多内置标记器,可用于构建自定义分析器。

  • 请考虑以下简单代码: https://godbolt.org/z/i2kby7 您可以看到和都没有优化对的潜在调用。在我的理解中,这是正确的:抽象机器假设变量随时可能发生变化(例如,由于是硬件映射的),因此将初始化常数折叠为检查将是错误的。 > 这里讨论了消除对的读写操作:允许编译器优化本地volatile变量吗?(谢谢内森!)。我认为标准是非常清楚的,那些读写必须发生。但是这些讨论并不包括编译器

  • 我试图理解Java源代码是如何执行的,我对JVM中的JIT编译器究竟是什么感到困惑。首先,让我告诉您我是如何理解从Java源代码到在计算机上执行机器代码的过程的。也许,我在这一过程中误解了一些导致混淆的东西。 步骤如下: 源代码被编译成字节码(.class文件) 现在,根据维基百科关于JVM的文章,更具体地说是“字节码解释器和实时编译器”部分,为了执行Java字节码,您需要一个解释器(但我们有一个

  • 问题内容: Java语言文档说: 如果将原始类型或字符串定义为常量,并且在编译时知道该值,则编译器会使用其值替换代码中各处的常量名称。这称为编译时常量。 我的理解是,如果我们有一段代码: 然后,编译器会将x代码中每次出现的内容替换为literal 10。 但假设常量在运行时初始化: 与编译时常量相比,性能是否会下降(无论可以忽略不计)? 另一个问题是下面的代码行: 被编译器以与编译时常量相同的方式