Last active
November 22, 2023 17:47
-
-
Save andrewrk/6212d883113a01735085b820f9ba4dc6 to your computer and use it in GitHub Desktop.
overhead of hello world in C, C++, Zig
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
andy@ark ~/tmp> gcc -o hello hello.c | |
andy@ark ~/tmp> strace ./hello | |
execve("./hello", ["./hello"], 0x7ffe96b5ddb0 /* 62 vars */) = 0 | |
brk(NULL) = 0x2129000 | |
access("/etc/ld-nix.so.preload", R_OK) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/haswell/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/haswell/x86_64", 0x7fff2bd55cc0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/haswell/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/haswell", 0x7fff2bd55cc0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/x86_64", 0x7fff2bd55cc0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls", 0x7fff2bd55cc0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/haswell/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/haswell/x86_64", 0x7fff2bd55cc0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/haswell/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/haswell", 0x7fff2bd55cc0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/x86_64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/x86_64", 0x7fff2bd55cc0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 | |
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240>\2\0\0\0\0\0"..., 832) = 832 | |
fstat(3, {st_mode=S_IFREG|0555, st_size=2056024, ...}) = 0 | |
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fe50c46c000 | |
mmap(NULL, 1828160, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fe50c2ad000 | |
mprotect(0x7fe50c2cf000, 1650688, PROT_NONE) = 0 | |
mmap(0x7fe50c2cf000, 1327104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22000) = 0x7fe50c2cf000 | |
mmap(0x7fe50c413000, 319488, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x166000) = 0x7fe50c413000 | |
mmap(0x7fe50c462000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b4000) = 0x7fe50c462000 | |
mmap(0x7fe50c468000, 13632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fe50c468000 | |
close(3) = 0 | |
arch_prctl(ARCH_SET_FS, 0x7fe50c46d540) = 0 | |
mprotect(0x7fe50c462000, 16384, PROT_READ) = 0 | |
mprotect(0x403000, 4096, PROT_READ) = 0 | |
mprotect(0x7fe50c496000, 4096, PROT_READ) = 0 | |
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0xa), ...}) = 0 | |
brk(NULL) = 0x2129000 | |
brk(0x214a000) = 0x214a000 | |
write(1, "Hello, World!\n", 14Hello, World! | |
) = 14 | |
exit_group(0) = ? | |
+++ exited with 0 +++ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
andy@ark ~/tmp> g++ -o hello hello.cpp | |
andy@ark ~/tmp> strace ./hello | |
execve("./hello", ["./hello"], 0x7ffe460aa220 /* 62 vars */) = 0 | |
brk(NULL) = 0xa33000 | |
access("/etc/ld-nix.so.preload", R_OK) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/haswell/x86_64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/haswell/x86_64", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/haswell/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/haswell", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/x86_64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/x86_64", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/tls", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/haswell/x86_64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/haswell/x86_64", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/haswell/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/haswell", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/x86_64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/x86_64", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib", {st_mode=S_IFDIR|0555, st_size=4096, ...}) = 0 | |
openat(AT_FDCWD, "/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/tls/haswell/x86_64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/tls/haswell/x86_64", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/tls/haswell/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/tls/haswell", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/tls/x86_64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/tls/x86_64", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/tls/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/tls", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/haswell/x86_64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/haswell/x86_64", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/haswell/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/haswell", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/x86_64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) | |
stat("/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/x86_64", 0x7ffdb0f983b0) = -1 ENOENT (No such file or directory) | |
openat(AT_FDCWD, "/nix/store/danv012gh0aakh8xnk2b35vahklz72mk-gcc-9.2.0-lib/lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 3 | |
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0@\17\n\0\0\0\0\0"..., 832) = 832 | |
fstat(3, {st_mode=S_IFREG|0555, st_size=1948144, ...}) = 0 | |
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6eca8de000 | |
mmap(NULL, 1963616, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f6eca6fe000 | |
mmap(0x7f6eca79b000, 950272, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9d000) = 0x7f6eca79b000 | |
mmap(0x7f6eca883000, 303104, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x185000) = 0x7f6eca883000 | |
mmap(0x7f6eca8cd000, 57344, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1ce000) = 0x7f6eca8cd000 | |
mmap(0x7f6eca8db000, 9824, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f6eca8db000 | |
close(3) = 0 | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/libm.so.6", O_RDONLY|O_CLOEXEC) = 3 | |
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\301\0\0\0\0\0\0"..., 832) = 832 | |
fstat(3, {st_mode=S_IFREG|0555, st_size=1405472, ...}) = 0 | |
mmap(NULL, 1306648, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f6eca5be000 | |
mmap(0x7f6eca5ca000, 618496, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7f6eca5ca000 | |
mmap(0x7f6eca661000, 634880, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa3000) = 0x7f6eca661000 | |
mmap(0x7f6eca6fc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13d000) = 0x7f6eca6fc000 | |
close(3) = 0 | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 3 | |
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\3402\0\0\0\0\0\0"..., 832) = 832 | |
fstat(3, {st_mode=S_IFREG|0444, st_size=112336, ...}) = 0 | |
mmap(NULL, 103120, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f6eca5a4000 | |
mprotect(0x7f6eca5a7000, 86016, PROT_NONE) = 0 | |
mmap(0x7f6eca5a7000, 69632, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7f6eca5a7000 | |
mmap(0x7f6eca5b8000, 12288, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7f6eca5b8000 | |
mmap(0x7f6eca5bc000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7f6eca5bc000 | |
close(3) = 0 | |
openat(AT_FDCWD, "/nix/store/xg6ilb9g9zhi2zg1dpi4zcp288rhnvns-glibc-2.30/lib/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 | |
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240>\2\0\0\0\0\0"..., 832) = 832 | |
fstat(3, {st_mode=S_IFREG|0555, st_size=2056024, ...}) = 0 | |
mmap(NULL, 1828160, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f6eca3e5000 | |
mprotect(0x7f6eca407000, 1650688, PROT_NONE) = 0 | |
mmap(0x7f6eca407000, 1327104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22000) = 0x7f6eca407000 | |
mmap(0x7f6eca54b000, 319488, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x166000) = 0x7f6eca54b000 | |
mmap(0x7f6eca59a000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b4000) = 0x7f6eca59a000 | |
mmap(0x7f6eca5a0000, 13632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f6eca5a0000 | |
close(3) = 0 | |
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6eca3e3000 | |
arch_prctl(ARCH_SET_FS, 0x7f6eca3e3f40) = 0 | |
mprotect(0x7f6eca59a000, 16384, PROT_READ) = 0 | |
mprotect(0x7f6eca5bc000, 4096, PROT_READ) = 0 | |
mprotect(0x7f6eca6fc000, 4096, PROT_READ) = 0 | |
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f6eca3e1000 | |
mprotect(0x7f6eca8cd000, 53248, PROT_READ) = 0 | |
mprotect(0x403000, 4096, PROT_READ) = 0 | |
mprotect(0x7f6eca908000, 4096, PROT_READ) = 0 | |
brk(NULL) = 0xa33000 | |
brk(0xa54000) = 0xa54000 | |
fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0xa), ...}) = 0 | |
write(1, "Hello World!\n", 13Hello World! | |
) = 13 | |
exit_group(0) = ? | |
+++ exited with 0 +++ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
andy@ark ~/tmp> zig build-exe hello.zig | |
andy@ark ~/tmp> strace ./hello | |
execve("./hello", ["./hello"], 0x7ffe33c09220 /* 62 vars */) = 0 | |
arch_prctl(ARCH_SET_FS, 0x23b478) = 0 | |
rt_sigaction(SIGSEGV, {sa_handler=0x22f8c0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_RESETHAND|SA_SIGINFO, sa_restorer=0x204640}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 | |
rt_sigaction(SIGILL, {sa_handler=0x22f8c0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_RESETHAND|SA_SIGINFO, sa_restorer=0x204640}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 | |
rt_sigaction(SIGBUS, {sa_handler=0x22f8c0, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_RESETHAND|SA_SIGINFO, sa_restorer=0x204640}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 | |
write(1, "hello", 5hello) = 5 | |
exit_group(0) = ? | |
+++ exited with 0 +++ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment