Debug-Build (x86_64-Emulation) schneller als Release (nativer arm64) auf dem MacBook M4C++

Programme in C++. Entwicklerforum
Anonymous
 Debug-Build (x86_64-Emulation) schneller als Release (nativer arm64) auf dem MacBook M4

Post by Anonymous »

Ich habe ein kleines Programm für eine Universitätsaufgabe geschrieben und ein überraschendes Ergebnis erhalten: Die Debug-Konfiguration läuft schneller als Release, und der für x86_64 (emuliert) kompilierte Code läuft schneller als der native arm64-Build.
System
  • MacBook M4
  • 12 Kerne
  • 24 GB RAM
Ich habe das Projekt in CLion erstellt und verschiedene Compiler ausprobiert – das Ergebnis ist das gleiche.
Verwendete CMake-Optionen

Code: Select all

DebugX86:  -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_BUILD_TYPE=Debug
ReleaseX86: -DCMAKE_OSX_ARCHITECTURES=x86_64 -DCMAKE_BUILD_TYPE=Release
DebugARM:  -DCMAKE_BUILD_TYPE=Debug
ReleaseARM: -DCMAKE_BUILD_TYPE=Release
Quellcode

Code: Select all

// Parameters
long long counter;
int val = 1;
#define NUMBER 10000000001ll

void fun1(int a, long long start, long long stop, long long *pcounter) {
volatile long long count = 0; // volatile so it is not completely optimized away
for (long long i = start; i < stop; ++i) {
if (i & 1) count -= a;
else count += a;
}
*pcounter = count;
}

double test1(void) {
auto t0 = std::chrono::high_resolution_clock::now();
long long cnt1 = 0;
fun1(val, 0, NUMBER, &cnt1);
counter = cnt1;
auto t1 = std::chrono::high_resolution_clock::now();
double ms = std::chrono::duration_cast(t1 - t0).count();
return ms;
}

int main(int argc, char** argv) {
std::cout

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post