这是一段看似非常特殊的C++代码.出于某种奇怪的原因,奇迹般地对数据进行排序使得代码几乎快了六倍.
#include <algorithm>
#include <ctime>
#include <iostream>
int main()
{
// Generate data
const unsigned arraySize = 32768;
int data[arraySize];
for (unsigned c = 0; c < arraySize; ++c)
data[c] = std::rand() % 256;
// !!! With this, the next loop runs faster.
std::sort(data, data + arraySize);
// Test
clock_t start = clock();
long long sum = 0;
for (unsigned i = 0; i < 100000; ++i)
{
// Primary loop
for (unsigned c = 0; c < arraySize; ++c) …Run Code Online (Sandbox Code Playgroud) 我目前正在使用GCC,但最近我发现了Clang而且我正在考虑切换.但是有一个决定性的因素 - 它产生的二进制文件的质量(速度,内存占用,可靠性) - 如果gcc -O3能够生成运行速度快1%或内存减少1%的二进制文件,那么它就是一个交易破坏者.
Clang拥有比GCC更好的编译速度和更低的编译时内存占用,但我真的对基准测试/比较结果编译软件感兴趣 - 你能指点我一些或描述你的经历吗?
我在大学,我们正在使用C项目.我们已经探索过GCC和Clang,而Clang似乎比GCC更加用户友好.因此,我想知道使用clang(而不是GCC)在Linux上使用C和C++进行开发有哪些优点或缺点?
在我的情况下,这将用于学生级程序,而不是生产.
如果我使用Clang,我应该使用GDB调试并使用GNU Make,还是使用其他调试器和make实用程序?