305得票3回答
为什么使用英特尔C++编译器时,NaN - NaN的结果为0.0?

众所周知在算术中 NaN 会传播,但我找不到任何证明,因此我写了一个小测试:#include <limits> #include <cstdio> int main(int argc, char* argv[]) { float qNaN = std::num...

65得票2回答
使用英特尔编译器时,Windows和Linux之间的性能差异:查看汇编代码

我在Windows和Linux(x86-64)上运行同一个程序。它是使用相同的编译器(Intel Parallel Studio XE 2017)和相同的选项编译的,但Windows版本比Linux版本快3倍。罪魁祸首是对std::erf的调用,该函数在Intel数学库中解析了两个情况(默认情...

46得票1回答
为什么英特尔编译器更喜欢使用NEG+ADD而非SUB?

在检查各种编译器对不同代码片段的输出时,我注意到英特尔的C编译器(ICC)倾向于优先发出一对NEG+ADD指令,而其他编译器会使用单个SUB指令。以一个简单的例子为例,考虑以下C代码:uint64_t Mod3(uint64_t value) { return (value % 3);...

40得票4回答
为什么将循环向量化到64位元素上,对于大缓冲区没有性能提升?

我正在研究向量化对程序性能的影响。为此,我编写了以下代码: #include <stdio.h> #include <sys/time.h> #include <stdlib.h> #define LEN 10000000 int main(){ ...

32得票8回答
Benchmarks for Intel C++ compiler and GCC

我有一台运行CentOS 5的AMD Opteron服务器。我想为一个相当大的基于C++ Boost的程序安装编译器。请问我应该选择哪种编译器?

31得票1回答
icc编译器崩溃:编译器能否在抽象机器中发明不存在的写操作?

考虑以下简单程序:#include <cstring> #include <cstdio> #include <cstdlib> void replace(char *str, size_t len) { for (size_t i = 0; i ...

26得票1回答
为什么在 Intel 的 icc 编译器中,malloc 比 new 慢 7 倍?

我对malloc和new进行了基准测试,用于分配float数组。我的理解是,malloc执行的操作是new执行操作的子集--malloc只是分配内存,而new既分配又构造,尽管我不确定这对原始类型是否有意义。 使用gcc进行基准测试的结果符合预期行为。malloc()更快。甚至有stacko...

26得票1回答
GCC将固定范围的for循环优化为具有更长、可变长度的循环。

我有一个POD结构体的数组,并尝试对其中一个字段进行求和。以下是最小化的示例:struct Item { int x = 0; int y = 0; }; typedef Item Items[2]; struct ItemArray { Items items; ...

24得票2回答
如何查看Intel ICC编译器启用了哪些编译选项?

在icc/icpc英特尔编译器中,是否有以下g ++命令的等效命令??> g++ -march=native -m32 ... -Q --help=target 这给了我以下输出:The following options are target specific: -m128bit-...

23得票1回答
不同GCC版本在链接/运行时的风险是什么?

我在使用英特尔的C++编译器,在Linux上依赖于GNU提供的libc.so和libstdc++.so。 我的问题是:为了使用一些最新的C++11特性,我需要使用GCC 4.7或更高版本附带的libstdc++。但我被困在使用CentOS 6.4的境地中。 在CentOS 6.4上,原生的...