https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69289
Bug ID: 69289
Summary: Compiling without --profile-generate causes longer
execution time (-O3)
Product: gcc
Version: 5.3.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: xonar.leroux at gmail dot com
Target Milestone: ---
Created attachment 37349
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37349&action=edit
Source
Running without --profile-generate (NOT --profile-use) causes a slowdown.
The speed script that I run simply runs the program with time output.
Effect is still present when using/not using -march=native and when using/not
using -funroll-loops
speed.sh
1 #!/bin/zsh
2
3 sudo cpupower frequency-set -g performance
4
5 time ./a.out 1
6 time ./a.out 2
7 time ./a.out 3
8 time ./a.out 4
9 time ./a.out 5
10 time ./a.out 1
11 time ./a.out 2
12 time ./a.out 3
13 time ./a.out 4
14 time ./a.out 5
15
16 sudo cpupower frequency-set -g powersave
% g++ --version
g++ (GCC) 5.3.0
Copyright (C) 2015 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.
% cat /proc/version
Linux version 4.3.3-2-ARCH (builduser@tobias) (gcc version 5.3.0 (GCC) ) #1 SMP
PREEMPT Wed Dec 23 20:09:18 CET 2015
%g++ test.cpp -std=c++11 -O3 -funroll-loops -march=native --profile-generate
-Wall -Wextra
test.cpp:37:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
int main(int argc, char** argv)
% ./speed.sh
[sudo] password for XXXXXXX:
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3
Setting cpu: 4
Setting cpu: 5
Setting cpu: 6
Setting cpu: 7
166
./a.out 1 0.32s user 0.55s system 99% cpu 0.875 total
166
./a.out 2 0.33s user 0.54s system 100% cpu 0.870 total
166
./a.out 3 0.33s user 0.54s system 100% cpu 0.870 total
166
./a.out 4 0.33s user 0.55s system 99% cpu 0.874 total
166
./a.out 5 0.35s user 0.52s system 99% cpu 0.870 total
166
./a.out 1 0.32s user 0.55s system 99% cpu 0.867 total
166
./a.out 2 0.35s user 0.52s system 99% cpu 0.872 total
166
./a.out 3 0.32s user 0.56s system 99% cpu 0.889 total
166
./a.out 4 0.33s user 0.53s system 99% cpu 0.868 total
166
./a.out 5 0.32s user 0.55s system 100% cpu 0.873 total
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3
Setting cpu: 4
Setting cpu: 5
Setting cpu: 6
Setting cpu: 7
./speed.sh 3.34s user 5.42s system 79% cpu 10.947 total
% g++ test.cpp -std=c++11 -O3 -funroll-loops -march=native -Wall -Wextra
test.cpp:37:14: warning: unused parameter ‘argc’ [-Wunused-parameter]
int main(int argc, char** argv)
% ./speed.sh
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3
Setting cpu: 4
Setting cpu: 5
Setting cpu: 6
Setting cpu: 7
166
./a.out 1 0.43s user 0.56s system 100% cpu 0.990 total
166
./a.out 2 0.42s user 0.57s system 99% cpu 0.983 total
166
./a.out 3 0.41s user 0.58s system 99% cpu 0.997 total
166
./a.out 4 0.47s user 0.54s system 99% cpu 1.005 total
166
./a.out 5 0.43s user 0.56s system 99% cpu 0.988 total
166
./a.out 1 0.45s user 0.54s system 99% cpu 0.991 total
166
./a.out 2 0.42s user 0.55s system 99% cpu 0.971 total
166
./a.out 3 0.39s user 0.59s system 99% cpu 0.982 total
166
./a.out 4 0.46s user 0.52s system 99% cpu 0.985 total
166
./a.out 5 0.48s user 0.51s system 99% cpu 0.985 total
Setting cpu: 0
Setting cpu: 1
Setting cpu: 2
Setting cpu: 3
Setting cpu: 4
Setting cpu: 5
Setting cpu: 6
Setting cpu: 7
./speed.sh 4.36s user 5.53s system 99% cpu 9.909 total