| Deutsch English Français Italiano |
|
<v5m1ti$39qob$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!weretis.net!feeder9.news.weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: bart <bc@freeuk.com>
Newsgroups: comp.lang.c
Subject: Re: Baby X is bor nagain
Date: Fri, 28 Jun 2024 11:05:39 +0100
Organization: A noiseless patient Spider
Lines: 141
Message-ID: <v5m1ti$39qob$1@dont-email.me>
References: <v494f9$von8$1@dont-email.me> <v53i4s$33k73$2@dont-email.me>
<v53lf7$34huc$1@dont-email.me> <v53vh6$368vf$1@dont-email.me>
<v54se1$3bqsk$1@dont-email.me> <20240624160941.0000646a@yahoo.com>
<v5bu5r$va3a$1@dont-email.me> <20240624181006.00003b94@yahoo.com>
<v5c86d$11ac7$1@dont-email.me> <JEheO.108086$ED9b.74955@fx11.iad>
<v5cblg$11q0j$1@dont-email.me> <gEieO.108089$ED9b.25598@fx11.iad>
<20240625113616.000075e0@yahoo.com> <mUzeO.141609$Cqra.55051@fx10.iad>
<v5elql$1jmii$1@dont-email.me> <m3BeO.24907$Gurd.16179@fx34.iad>
<v5empd$1jndv$2@dont-email.me> <v5eph4$1k6a9$1@dont-email.me>
<87ed8jnbmf.fsf@bsb.me.uk> <v5jhls$2m7np$1@dont-email.me>
<v5jm32$2nqvp$1@dont-email.me> <v5k3v2$2qllm$1@dont-email.me>
<v5kfst$2svt3$1@dont-email.me> <v5kmlm$2u918$1@dont-email.me>
<v5lfq9$35vli$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Fri, 28 Jun 2024 12:05:39 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="e7f1b554b99247d34cf39342a3f15f64";
logging-data="3468043"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+0dMdxLD80FFfaumZg/287"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:JptscbT/0e4itw+gXF92+R+Ni6c=
Content-Language: en-GB
In-Reply-To: <v5lfq9$35vli$1@dont-email.me>
Bytes: 7972
On 28/06/2024 05:56, David Brown wrote:
> On 27/06/2024 23:47, bart wrote:
>> On 27/06/2024 20:51, David Brown wrote:
>>> On 27/06/2024 18:28, bart wrote:
>>>> On 27/06/2024 13:31, David Brown wrote:
>>>>> On 27/06/2024 13:16, bart wrote:
>>>>
>>>
>
>>> No one doubts that gcc is slower than tcc. That is primarily because
>>> it does vastly more, and is a vastly more useful tool. And for most
>>> C compiles, gcc (even gcc -O2) is more than fast enough.
>>
>> And for most of /my/ compiles, the code produced by gcc-O0 is fast
>> enough. It also about the same speed as code produced by one of my
>> compilers.
>>
>
> With most of your compiles, is "gcc -O2" too slow to compile? If not,
> then why would you or anyone else actively /choose/ to have a poorer
> quality output and poorer quality warnings? I appreciate that fast
> enough output is fast enough (just as I say the same for compilation
> speed) - but choosing a slower output when a faster one is just as easy
> makes little sense. The only reason I can think of why "gcc -O2 -Wall"
> is not the starting point for compiler flags is because you write poor C
> code and don't want your compiler to tell you so!
I might very occasionally use gcc -O2/-O3 when I want a fast product,
(this is mostly with generated C) most often when I'm benchmarking and
what to report a higher lines/second figure or some such measure. Since
that would be a fairer comparison with other products which almost
certainly will be using an optimised build.
But usually I never bother. The 40% boost that gcc-O3 gives me, makes
most runtimes of my language tools 10-20ms faster (so 0.07 seconds
instead of 0.09 seconds; I can live with that).
The cost of the speedup is not just having to hang about for gcc-O3
(it's like doing 80mph on the M6 and having to stop for a red light).
It's keeping my non-C source code conservative - avoiding features that
are troublesome to transpile to C.
(One feature is a special looping switch that I implemented as a fast
computed-goto. It is transpiled into a regular C switch, but it means
gcc-O3 can't generate code faster than mine. Only if I were to use C
extensions.)
My other language product that could be speeded up is a bytecode
interpreter, which has two dispatch modes. One HLL-only dispatch mode
can have that 40-50% speed-up via C and gcc-O3.
But I normally use the ASM-accelerated mode, which is about 150-200%
faster even than the interpreter using transpiled C + gcc-O3.
Note that all these examples benefit from whole-program optimisation of
C. If written directly in C, while programs like interpreters can
benefit from all sorts of tricks like inlining everything, they would
lose that whole-program analysis.
>> So I tend to use it when I want the extra speed, or other compilers
>> don't work, or when a particular app only builds with that compiler.
>>
>> Otherwise the extra overheads are not worth the bother.
>>
>>
>>
>>> And it is free, and easily available on common systems. Therefore
>>> there is no benefit to using tcc except in very niche cases.
>>
>> And my argument would be the opposite. The use of gcc would be the
>> exception. (Long before I used gcc or tcc, I used lccwin32.)
>
> On Linux, almost everyone uses gcc, except for a proportion who actively
> choose to use clang or icc. The same applies to other many other *nix
> systems, though some people will use their system compiler on commercial
> Unixes. For Macs, it is clang disguised as gcc that dominates. On
> Windows, few people use C for native code (C++, C# and other languages
> dominate). I expect the majority use MSVC for C, and there will be
> people using a variety of other tools including lcc-win and Borland, as
> well as gcc in various packagings. (And embedded developers use
> whatever cross-compile tools are appropriate for their target,
> regardless of the host - the great majority use gcc now.)
>
> I don't believe that in any graph of compiler usage on any platform, tcc
> would show up as anything more than a tiny sliver under "others".
>
>>
>> Here's the result of an experiment I did. gcc 14 is about 800MB and
>> over 10,000 files. I wanted to see the minimal set of files that would
>> compile one of my generated C files.
>
> Why? 800 MB is a few pence worth of disk space. For almost all uses,
> it simply doesn't matter.
It's sloppy.
If I transpile code to C via my one-file 0.3MB compiler, I'd have to
tell people they need also this 800MB/10000-file dependency, of which
they only need 45MB/15 files (or more with linking), but, sorry, I have
no idea which bits are actually essential!
>>
>> I can't explain to somebody who doesn't get it why a small, simple
>> tool is desirable.
>>
>
> If you were trying to say that tcc is simpler to /use/ than gcc, that
> would be a different matter entirely. That would be a relevant factor.
> The size of the gcc installation, is all hidden behind the scenes. Few
> people know how big it is on their system, fewer still care.
>
> (And I am not sure I agree with such a claim - certainly you /can/ have
> very advanced and complicated use of gcc. But in comparison to learning
> C itself, running "gcc -Wall -O2 -o hello hello.c" is hardly rocket
> science. But I would certainly be much more open to a "simpler to use"
> argument.)
Actually, on Windows, tcc is harder to use than gcc for my generated C.
Most of that is due to needing the -fdollars-in-identifiers option
because my C uses '$'.
It probably takes longer to type that, if you compile half a dozen
times, than it would take to fix tcc to allow '$' /unless/ such an
option was used.
(I just tried it; what tool longer was finding the write source file.
The fix was to change:
set_idnum('$', s1->dollars_in_identifiers ? IS_ID : 0);
to:
set_idnum('$', s1->dollars_in_identifiers ? 0 : IS_ID);
But that only fixes one copy of it. It doesn't fix the versions that
other people use.)