[Mesa-dev] [PATCH] glsl: optimize list handling in opt_dead_code
Eero Tamminen
eero.t.tamminen at intel.com
Tue Oct 18 13:55:33 UTC 2016
Hi,
On 18.10.2016 16:25, Jan Ziak wrote:
> On Tue, Oct 18, 2016 at 3:12 PM, Nicolai Hähnle <nhaehnle at gmail.com> wrote:
>> On 18.10.2016 15:07, Jan Ziak wrote:
>>> On Tue Oct 18 09:29:59 UTC 2016, Eero Tamminen wrote:
>>>> On 18.10.2016 01:07, Jan Ziak wrote:
>>>>> - The total number of executed instructions goes down from 64.184 to
>>>>> 63.797
>>>>> giga-instructions when Mesa is compiled with "gcc -O0 ..."
>>>>
>>>> Please don't do performance related decisions based on data from
>>>> compiling code with optimizations disabled. Use -O2 or -O3 (or even
>>>> better, check both).
>>>
>>> Options -O2 and -O3 interfere with profiling tools.
>>>
>>> I will try using -Og the next time.
>>
>> Just stop and use proper profiling tools like perf that can work with
>> optimized tools.
Valgrind/callgrind/cachegrind works also fine with optimized binaries.
All profiling tools lie, at least a bit. It's better to know their
strengths and weaknesses so that one knows which ones complement each
other. Perf is e.g. good at finding hotspots, Valgrind (callgrind) is
more reliable in telling how they get called.
One may also needs GCC version from this decade. Really old GCC
versions didn't inlude all debug info needed for debugging optimized
binaries.
>> You may have to compile with -fno-omit-frame-pointer, but
>> anything more than that is going to distort your measurement results so much
>> that they're worthless.
>
> The function from -O0, -O1, -O2 to number-of-instructions (or to
> number-of-cycles) is in the vast majority of cases a monotonically
> decreasing function.
>
> Are you saying that this rule does not hold in the case of this patch?
-O1 puts variables into registers instead of using them directly from
stack like -O0 does. -O3 adds things like inlining and aliasing
analysis. Only higher optimization levels do dead code analysis.
Whether these increase or decrease code side, depends on the code.
- Eero
More information about the mesa-dev
mailing list