Deutsch English Français Italiano |
<v53vh6$368vf$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!feed.opticnetworks.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: David Brown <david.brown@hesbynett.no> Newsgroups: comp.lang.c Subject: Re: Baby X is bor nagain Date: Fri, 21 Jun 2024 15:34:30 +0200 Organization: A noiseless patient Spider Lines: 82 Message-ID: <v53vh6$368vf$1@dont-email.me> References: <v494f9$von8$1@dont-email.me> <v49seg$14cva$1@raubtier-asyl.eternal-september.org> <v49t6f$14i1o$1@dont-email.me> <v4bcbj$1gqlo$1@raubtier-asyl.eternal-september.org> <v4bh56$1hibd$1@dont-email.me> <v4c0mg$1kjmk$1@dont-email.me> <v4c8s4$1lki1$4@dont-email.me> <20240613002933.000075c5@yahoo.com> <v4emki$28d1b$1@dont-email.me> <20240613174354.00005498@yahoo.com> <v4okn9$flpo$2@dont-email.me> <v4p37r$k32n$1@dont-email.me> <v4pei3$m5th$2@dont-email.me> <v4plsk$nn9o$2@dont-email.me> <v4pnq6$o4fs$1@dont-email.me> <v4q245$si2n$1@dont-email.me> <v4q2rl$sqk3$1@dont-email.me> <v52308$2nli8$3@dont-email.me> <v53i4s$33k73$2@dont-email.me> <v53lf7$34huc$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 21 Jun 2024 15:34:31 +0200 (CEST) Injection-Info: dont-email.me; posting-host="017bd53d5809bfe07afbcdbc63488ddf"; logging-data="3351535"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+TL58h8L3UY4oSVClmjXosm0jsmzr5z/0=" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Cancel-Lock: sha1:BYuJirwN58/y7+gih7CHSR6JNZ0= Content-Language: en-GB In-Reply-To: <v53lf7$34huc$1@dont-email.me> Bytes: 4769 On 21/06/2024 12:42, bart wrote: > On 21/06/2024 10:46, David Brown wrote: >> On 20/06/2024 22:21, Vir Campestris wrote: >>> On 17/06/2024 20:29, David Brown wrote: >>>> 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. >>> >>> To me disabling optimisations does one slightly useful thing >>> (compiles a little quicker) and one really useful one. It makes the >>> interactive debugger work. Optimised code confuses the debugger, >>> especially when it does things like reorder code, unroll loops, or >>> merge equivalent functions. >>> >>> Of course I then test with the optimised version. >>> >>> Andy >> >> >> I understand your viewpoint and motivation. But my own experience is >> mostly different. >> >> First, to get it out of the way, there's the speed of compilation. >> While heavy optimisation (-O3) can take noticeably longer, I never see >> -O0 as being in any noticeable way faster for compilation than -O1 or >> even -O2. > > Absolute time or relative? Both. > For me, optimised options with gcc always > take longer: Of course. But I said it was not noticeable - it does not make enough difference in speed for it to be worth choosing. > > C:\c>tm gcc bignum.c -shared -s -obignum.dll # from cold > TM: 3.85 Cold build times are irrelevant to development - when you are working on a project, all the source files and all your compiler files are in the PC's cache. > > C:\c>tm gcc bignum.c -shared -s -obignum.dll > TM: 0.31 > > C:\c>tm gcc bignum.c -shared -s -obignum.dll -O2 > TM: 0.83 > > C:\c>tm gcc bignum.c -shared -s -obignum.dll -O3 > TM: 0.93 > > C:\c>dir bignum.dll > 21/06/2024 11:14 35,840 bignum.dll Any build time under a second is as good as instant. I tested on a real project, not a single file. It has 158 C files and about 220 header files. And I ran it on my old PC, without any "tricks" that you dislike so much, doing full clean re-builds. The files are actually all compiled twice, building two variants of the binary. With -O2, it took 34.3 seconds to build. With -O1, it took 33.4 seconds. With -O0, it took 30.8 seconds. So that is a 15% difference for full builds. In practice, of course, full rebuilds are rarely needed, and most builds after changes to the source are within a second or so. So yes, unoptimised builds are consistently faster. But for something other than a "hello world" program or single monster source code, the difference is not relevant in normal development work.