问题标签 [compiler-optimization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
11 回答
736 浏览

c++ - 您通常如何设置编译器的优化设置?

您通常将编译器设置为优化最大速度还是最小代码大小?还是您手动配置个别优化设置?为什么?

我注意到大多数时候人们倾向于将编译器优化设置保留为默认状态,这对于 Visual c++ 意味着最大速度。我一直觉得默认设置更多地与在基准测试中看起来不错有关,这往往是完全适合 L2 缓存的小程序,而不是最适合整体性能的设置,所以我通常将其设置为优化最小尺寸。

0 投票
2 回答
37042 浏览

gcc - 如何使用 gcc 进行矢量化?

v4 系列编译器可以使用一些现代 CPU 上的SIMDgcc处理器自动矢量化循环,例如 AMD Athlon 或 Intel Pentium/Core 芯片。这是怎么做到的?

0 投票
7 回答
7941 浏览

c++ - 我的 C++ 目标文件太大

我正在开发一个 C++ 程序,从一个 1200 行文件(它初始化一个相当复杂的状态机)中编译的目标代码接近 1 兆字节。是什么让文件如此之大?有没有办法可以找到目标文件中占用空间的内容?

0 投票
6 回答
2159 浏览

c - SCCS “what” 字符串没有被编译器优化掉

我们尝试在二进制对象中嵌入 what 字符串,以便我们可以看到已部署的可执行文件或共享库的版本号。通常我们将标准 CVS Id 信息嵌入到这个 what 字符串中。例如,我们可能嵌入:

在 C 代码中。

从人(1)什么:

what 实用程序在每个文件名中搜索出现的模式 @(#),SCCS get 命令(请参阅 sccs-get(1))替换了 @(#) ID 关键字,并打印出 ", >, NEWLINE、\ 或 NULL 字符。

该变量只有一个实例,并且从未被引用。有人建议这可能会被编译器优化掉。

多年来,我一直在 C 和 C++ 以及各种编译器中使用这种技术,但我还没有看到什么字符串被优化掉了。

任何人都知道为什么它们没有被优化掉?

0 投票
8 回答
804 浏览

c# - 使用 + 分配单个字符串值的性能成本是多少

我经常想知道,在最初为字符串赋值时,将字符串拆分为多行以提高可读性是否会降低性能成本。我知道字符串是不可变的,因此每次都需要创建一个新字符串。此外,由于当今非常快速的硬件,性能成本实际上是无关紧要的(除非您处于某种恶魔般的循环中)。例如:

JVM 或 .Net 的编译器和其他优化如何处理这个问题。它会创建一个字符串吗?或者它会创建 1 个字符串,然后创建一个新的连接值,然后再创建另一个连接值?

这是出于我自己的好奇心。

0 投票
3 回答
218 浏览

compiler-construction - 环裂变是否在单核中工作?

如果我为单核处理器编译,什么时候使用循环裂变/分布有意义?

0 投票
7 回答
1052 浏览

compiler-optimization - 30 GOTO 10 会一直到 10 吗?

本着乔尔提到的最新播客的精神,他想要一些简单的问题和可能有趣的答案......

在我们今天必须编程的环境中,我们不能依赖语言语句的执行顺序。真的吗?我们应该担心吗?

30 GOTO 10 总是会转到 10 吗?*

*我没有故意使用 20 ;)

[编辑] 对于投票结束这个问题的四个人......

“运行时编译器使用分析信息来帮助优化正在编译的代码。JVM 被允许使用特定于执行的信息以生成更好的代码,这意味着在一个程序中编译方法 M 可能会生成与在一个程序中编译 M 不同的代码其他”

(来自 Java 并发实践,2006,Goetz 等人)

..看看“单态调用转换”

[编辑]

和另一个编辑,你的处理器被允许交换语句的执行顺序......

0 投票
3 回答
1342 浏览

compiler-optimization - 在什么情况下编译器可以改变程序语句的执行顺序?

如果这不是一个真正的问题,请随时关闭;)

0 投票
6 回答
9026 浏览

c - C 编程:从汇编程序的角度来看 ++i 和 i=i+1 之间的区别?

这是一道面试题。我说他们是一样的,但这被判定为错误的反应。从汇编程序的角度来看,有什么可以想象的区别吗?我使用默认的 gcc 优化和 -S 编译了两个简短的 C 程序以查看汇编器输出,它们是相同的。

0 投票
10 回答
25348 浏览

c++ - C/C++ 编译器如何工作?

经过十多年的 C/C++ 编码,我注意到以下模式 - 非常优秀的程序员往往对编译器的内部有详细的了解。

我是一个相当优秀的程序员,我有一个特别的编译器“迷信”集合,所以我想重新认识我的知识并从基础开始。

任何人都可以推荐在线资源或喜爱书籍的链接吗?我对 C/C++ 编译、优化、GCC 和 LLVM 特别感兴趣。