C++ linker presentation
This commit is contained in:
24
cpplinker/08_lto/build.sh
Normal file
24
cpplinker/08_lto/build.sh
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
echo "=== Build WITHOUT LTO ==="
|
||||
g++ -std=c++17 -O2 -c foo.cpp -o foo.o
|
||||
g++ -std=c++17 -O2 -c main.cpp -o main.o
|
||||
g++ -O2 foo.o main.o -o app_nolto -lm
|
||||
echo "Created app_nolto"
|
||||
|
||||
echo ""
|
||||
echo "=== Build WITH LTO ==="
|
||||
g++ -std=c++17 -O2 -flto -c foo.cpp -o foo_lto.o
|
||||
g++ -std=c++17 -O2 -flto -c main.cpp -o main_lto.o
|
||||
g++ -O2 -flto foo_lto.o main_lto.o -o app_lto -lm
|
||||
echo "Created app_lto"
|
||||
|
||||
echo ""
|
||||
echo "=== Compare binary sizes ==="
|
||||
ls -l app_nolto app_lto
|
||||
|
||||
echo ""
|
||||
echo "=== Run both ==="
|
||||
echo -n "no-lto: "; ./app_nolto
|
||||
echo -n "lto: "; ./app_lto
|
||||
9
cpplinker/08_lto/foo.cpp
Normal file
9
cpplinker/08_lto/foo.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
#include <cmath>
|
||||
|
||||
double heavy_compute(double x) {
|
||||
double result = 0;
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
result += std::sin(x + i) * std::cos(x - i);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
9
cpplinker/08_lto/main.cpp
Normal file
9
cpplinker/08_lto/main.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
#include <iostream>
|
||||
|
||||
double heavy_compute(double);
|
||||
|
||||
int main() {
|
||||
double r = heavy_compute(1.0);
|
||||
std::cout << "result = " << r << "\n";
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user