[FFmpeg-devel] Moving if(constant expression) to preprocessor?
Måns Rullgård
mans
Sun Sep 19 22:52:17 CEST 2010
"Axel Holzinger" <aholzinger at gmx.de> writes:
> M?ns Rullg?rd wrote:
>> "Axel Holzinger" <aholzinger at gmx.de> writes:
>>
>> > I want to compile witout optimisation.
>> > Why shouldn't I?
>>
>> Because without optimisation, the code will be unusably slow.
>
> Use the release build then. You get optimisation, which you like and
> full speed. Let me have zero optimisation and easy debugging.
This reminds me of an old joke:
A man is walking down a dark country lane when he notices a stranger
standing beneath a lone lamp post, staring intently at the ground as
though searching for something. He greets the stranger and offers his
assistance.
"I seem to have lost my keys, I think it was over there," the stranger
replies, indicating along the road.
"If you lost them there, then why are you searching here?"
"There is a lamp here, so it is easier to see."
>> > What is the benefit of optimisation in a debug build?
>>
>> What is the benefit of debugging code you do not intend to use?
>
> To understand the architecture.
> To understand why a special function call fails.
> To understand why another works correct.
>
> Need more?
I don't see how doing any of the above is related to optimisation
being enabled or not.
> Every now and then in FFmpeg user or libav user I read "Look at the
> code". I want to look at the code while it does process my calls. So I
> want to debug and I don't want to be hindered by optimised away local
> variables, loops, etc.
printf is your friend.
> And still I don't see what is the advantage of an optimised debug
> build. What the hell is the debug build good for anyhow then?
A debug build has full symbol information, including line numbers,
which greatly simplifies the analysis of core dumps and profiling
data.
>> > Using a const expression in a runtime if is obfuscation
>>
>> Code is obfuscated when it is not obvious at a glance what it does.
>> If you find it hard to understand what
>> if (CONFIG_FOO) do_something();
>> does, you should probably consider a career not involving programming.
>
> You are referring to how the code WORKS. That is indeed obvious - and
> as well obvious with "AV_IF" instead of "if". I'm referring to how the
> code BUILDS - and that is NOT obvious with "if" and the dependency on
> dead code elimination. It's not even documented in the code.
It is non-obvious to most people how just about any construct is
turned into machine code, yet they have no trouble understanding the
source.
>> > and besides it's plain bad style.
>>
>> Matter of opinion. You have made yours clear, as have we
>> ours. We happen be the ones making the rules here, not you.
>
> Halleluja. God has spoken.
Would like that inscribed on stone tablets?
>> > Relying on dead code elimination for making a build succeed is a hack.
>>
>> Is relying on the optimisation to make the code fast enough also a
>> hack?
>
> No.
OK... so how are we to know which optimisations are a "hack" and which
ones are kosher?
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list