oscar6echo / rust-c-go-speed

12 stars 4 forks source link

Consider using the Zig compiler for the C code #2

Closed ewaldhorn closed 1 week ago

ewaldhorn commented 2 weeks ago

Out of interest, have you by any chance tried the Zig compiler to compile the C code? On my Mac, I get better performance using this than GCC directly. I'd be interested to see if it makes a difference in your environment.

zig cc -Wall -g -O3 key-gen-face-five.c -o key-gen-face-five-exe is the build command I used with Zig 0.13.0 from https://ziglang.org/.

oscar6echo commented 1 week ago

Don't know zig. Just installed and ran the command you mention.

Here is what I see.
In my case gcc exe is about twice as fast !!

# gcc

❯ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

❯ gcc -Wall -g -O3 key-gen-face-five.c -o key-gen-face-five-exe

❯ ./key-gen-face-five-exe                                      
bootstrap: keys = 0 1 5 
searching keys from k =3
        key[3] = 22
                run time for key[3] =   0.00 s
                run time to key[3] =    0.00 s
        key[4] = 94
                run time for key[4] =   0.00 s
                run time to key[4] =    0.00 s
        key[5] = 312
                run time for key[5] =   0.00 s
                run time to key[5] =    0.00 s
        key[6] = 992
                run time for key[6] =   0.01 s
                run time to key[6] =    0.01 s
        key[7] = 2422
                run time for key[7] =   0.03 s
                run time to key[7] =    0.03 s
        key[8] = 5624
                run time for key[8] =   0.11 s
                run time to key[8] =    0.14 s
        key[9] = 12522
                run time for key[9] =   0.50 s
                run time to key[9] =    0.64 s
        key[10] = 19998
                run time for key[10] =  0.89 s
                run time to key[10] =   1.53 s
done

# zig

❯ zig version                                                     
0.13.0

❯ zig cc -Wall -g -O3 key-gen-face-five.c -o key-gen-face-five-exe

❯ ./key-gen-face-five-exe                                         
bootstrap: keys = 0 1 5 
searching keys from k =3
        key[3] = 22
                run time for key[3] =   0.00 s
                run time to key[3] =    0.00 s
        key[4] = 94
                run time for key[4] =   0.00 s
                run time to key[4] =    0.00 s
        key[5] = 312
                run time for key[5] =   0.00 s
                run time to key[5] =    0.00 s
        key[6] = 992
                run time for key[6] =   0.01 s
                run time to key[6] =    0.01 s
        key[7] = 2422
                run time for key[7] =   0.04 s
                run time to key[7] =    0.06 s
        key[8] = 5624
                run time for key[8] =   0.20 s
                run time to key[8] =    0.25 s
        key[9] = 12522
                run time for key[9] =   0.96 s
                run time to key[9] =    1.21 s
        key[10] = 19998
                run time for key[10] =  1.71 s
                run time to key[10] =   2.92 s
done

My machine:

❯ neofetch  
            .-/+oossssoo+/-.               olivier@olivier-base 
        `:+ssssssssssssssssss+:`           -------------------- 
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 22.04.5 LTS x86_64 
    .ossssssssssssssssssdMMMNysssso.       Host: NUC10i7FNH M38010-308 
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Kernel: 6.8.0-45-generic 
  +ssssssssshmydMMMMMMMNddddyssssssss+     Uptime: 2 hours, 7 mins 
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Packages: 2602 (dpkg), 15 (snap) 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Shell: zsh 5.8.1 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Resolution: 3840x2160 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   DE: Unity 
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   WM: Mutter 
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   WM Theme: Adwaita 
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Theme: Yaru-dark [GTK2/3] 
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/    Icons: Yaru [GTK2/3] 
  +sssssssssdmydMMMMMMMMddddyssssssss+     Terminal: vscode 
   /ssssssssssshdmNNNNmyNMMMMhssssss/      CPU: Intel i7-10710U (12) @ 4.700GHz 
    .ossssssssssssssssssdMMMNysssso.       GPU: Intel Comet Lake UHD Graphics 
      -+sssssssssssssssssyyyssss+-         Memory: 7088MiB / 31807MiB 
        `:+ssssssssssssssssss+:`
            .-/+oossssoo+/-.                                       
ewaldhorn commented 1 week ago

I guess it must be Apple GCC that's making the difference.

gcc --version Apple clang version 15.0.0 (clang-1500.1.0.2.5) Target: x86_64-apple-darwin22.6.0 Thread model: posix

Thank you for checking!