Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save sys9kdr/2f2764ce0d244472de274b20b70c3b50 to your computer and use it in GitHub Desktop.
Save sys9kdr/2f2764ce0d244472de274b20b70c3b50 to your computer and use it in GitHub Desktop.
# なぜかわずかな違いで実行速度が倍違う
この記事では、`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