Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Malcolm McLean Newsgroups: comp.lang.c Subject: Re: Baby X is bor nagain Date: Mon, 17 Jun 2024 22:06:35 +0100 Organization: A noiseless patient Spider Lines: 61 Message-ID: References: <20240613002933.000075c5@yahoo.com> <20240613174354.00005498@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Mon, 17 Jun 2024 23:06:36 +0200 (CEST) Injection-Info: dont-email.me; posting-host="f27d645ef399f596eab7376e05efef48"; logging-data="985579"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19H14BiRK05tTv0KMzwrd54je5eQFErRMU=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:PF0h7P0cvOf7iwY3+dfD1j8egsg= Content-Language: en-GB In-Reply-To: Bytes: 4466 On 17/06/2024 20:29, David Brown wrote: > On 17/06/2024 21:17, Malcolm McLean wrote: >> On 17/06/2024 17:21, David Brown wrote: >>> On 17/06/2024 17:48, Malcolm McLean wrote: >>>> >>> Using C without optimisation is like driving a car but refusing to go >>> out of first gear.  You would probably have been better off with a >>> bicycle or driving a tank, according to the task at hand. >>> >> I drive C in first gear when I'm developing, which means that the car >> is given instructions to go to the right place and obey all, the rules >> of the road. > > I do my C development with optimisations enabled, which means that the C > compiler will obey all the rules and requirements of C.  Optimisations > don't change the meaning of correct code - they only have an effect on > the results of your code if you have written incorrect code.  I don't > know about you, but my aim in development is to write /correct/ code. If > disabling optimisations helped in some way, it would be due to bugs and > luck. > >> But it never gets out of frst gear when I'm driving it. However >> because of the nature of what we do, which is interactivce programming >> mostly, usually "just noticeable" time is sufficient. It's a bit like >> driving in London - a top of the range sports car is no better than a >> beat up old mini, they travel at the same speed because of all the >> interactions. >> > > If I am writing PC code where the timing is determined by user > interaction, I would not be writing in C - it is almost certainly a poor > choice of language for the task. > >> They I had it over to the deployment team, and they take the >> restraints off, and allow it to go up to top gear, and it is compiled >> with full optimisation. > > That is insane development practice, if I understand you correctly.  For > some kinds of development work, it can make sense to have one person (or > team) make prototypes or proofs-of-concept, and then have another person > (or team) use that as a guide, specification and test comparison when > writing a fast implementation for the real product.  But the prototype > should be in a high-level language, written in the clearest and simplest > manner - not crappy code in a low-level language that works by luck when > it is not optimised! > >> And I don't actually have a computer with one of the most important >> hardware targets, but it's all written in C++, a bit in C, and none in >> assembler. So I can't profile it, and I have to rely on insight into >> where the inner loop will be, and how to avoid expensive operations in >> the inner loop. > > If you are writing C++ and are not happy about using optimisation, you > are in the wrong job. > You know what hardware your code will run on. I don't. -- Check out my hobby project. http://malcolmmclean.github.io/babyxrc