Created
December 17, 2024 17:24
-
-
Save sys9kdr/2f2764ce0d244472de274b20b70c3b50 to your computer and use it in GitHub Desktop.
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
# なぜかわずかな違いで実行速度が倍違う | |
この記事では、`old Makefile` と `new Makefile` で生成されたバイナリの実行速度における200%の差について考察します。二つのMakefileにはわずかな違いしかないにも関わらず、最終的に生成される実行ファイルの性能が大きく異なる理由を探ることは、コンパイルオプションやビルドプロセスがパフォーマンスに与える影響について深く考える良い機会です。 | |
## old Makefile の内容と問題点 | |
まず、`old Makefile`を見てみましょう。 | |
```makefile | |
CFLAGS=-O3 -march=native -mwindows -Wall -Wextra -Werror -flto -fno-exceptions | |
LDFLAGS=-Wl,--as-needed -Wl,-O3 -Wl,--sort-common -Wl,--gc-sections -Wl,--no-undefined -Wl,--strip-all | |
LDLIBS=-limm32 #-luser32 | |
zenhan.exe: zenhan.o | |
zenhan.exe: zenhan.c | |
(CC) $(LDFLAGS) -o $@ $^ $(LDLIBS) | |
strip $@ | |
zenhan.o: zenhan.c | |
$(CC) $(CFLAGS) -c -o $@ $^ | |
.PHONY: clean | |
clean: | |
rm -f zenhan.exe zenhan.o |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment