为什么 GCC 不将 a*a*a*a*a*a 优化为 (a*a*a)*(a*a*a)?
我正在对科学应用程序进行一些数值优化。我注意到的一件事是,GCC 会通过将调用 pow(a,2) 编译为 a*a 来优化调用 pow(a,2),但是调用 pow(a,6 )没有进…
什么是 MSVC++ 2008 Express Editon 编译器有和没有
我一直想知道 msvc++ 2008 编译器是否处理同一文件的多个标头包含,考虑以下示例: main.cpp #include "header.h" #include "header.h" 编译器会…
“异或eax,ebp”用于 C++编译器输出
我只是尝试在 VS2010 上编译几个 C++ 片段,并在 IDA Pro 上分析可执行文件。我注意到,它们中的大多数在开始时都有类似以下内容(在调用 __security_…
const 正确性是否为编译器提供了更多优化空间?
我知道它提高了可读性并使程序不易出错,但是它对性能提高了多少? 顺便说一句,引用和 const 指针之间的主要区别是什么?我假设它们以不同的方式存储…
类中的方法是否使用“奇怪的重复模板模式”?由现代 c++ 内联编译器
我有一段性能关键的代码,我正在考虑使用 CRTP。我的问题是大多数编译器能够在多大程度上优化代码。我特别想知道编译器是否可以内联(在适当的时候)…
当 IAR MSP430 编译器中的优化设置为高时,会发生指令的疯狂执行
请参考我下面的代码。当 IAR MSP430 编译器中的优化设置为高时,我遇到以下问题。当优化程度较低时,代码可以正常工作。 问题:如果 (B) 处的条件语句…
现代编译器上的联合是否比转换更有效?
考虑简单的代码: UINT64 result; UINT32 high, low; ... result = ((UINT64)high << 32) | (UINT64)low; 现代编译器是否会将其转换为真正的高位桶移…
包含对 Regex.Replace() 和/或 String.Format() 调用的静态字符串声明是否会在编译时得到优化?
根据文章 “如何:连接多个字符串(C# 编程指南)” 字符串文字和字符串常量将在编译时连接成单个字符串。它进一步指出字符串变量只能在运行时连接。 …
如何在 Haskell 中使 CAF 不是 CAF?
如何将常量应用形式变成,而不是常量应用形式,以阻止它在程序的整个生命周期中保留? 我已经尝试过这种方法: -- | Dummy parameter to avoid creati…
Android 中的 Java 代码编译器优化
假设我定义了一个像这样的字符串: private final static String s = "To Be or not to be, that is the question"; 并且在其中一个(静态)方法中,…
定时释放模式(优化)功能
我想对 C 中的一些简单函数进行一些基准测试。 // Record start time // Do a bunch of work for (int i = 0; i < SOME_BIG_NUMBER; i++) mySimpleFun…
为什么 clang 的 `-O3` 分配比 g++ 快 2 倍?基于简单的 alloca 基准
关于 alloca 的使用和滥用 在底部得到了一些基准之前的一个问题。 clang 显然在 -O3 优化器配置文件中有更好的实现。什么给? clang 是否有偷工减料?…