Deutsch English Français Italiano |
<v43vkr$3d7el$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: C23 thoughts and opinions Date: Sun, 9 Jun 2024 11:20:11 +0100 Organization: A noiseless patient Spider Lines: 76 Message-ID: <v43vkr$3d7el$1@dont-email.me> References: <v2l828$18v7f$1@dont-email.me> <v38of2$1gsj2$1@dont-email.me> <v39v87$1n7bk$1@dont-email.me> <20240530170836.00005fa0@yahoo.com> <v3a3k5$1ntrn$1@dont-email.me> <20240530180345.00003d9f@yahoo.com> <v3chc4$27uij$1@dont-email.me> <20240531161937.000063af@yahoo.com> <20240531162811.00006719@yahoo.com> <20240531164835.00007128@yahoo.com> <v3cldt$28n91$2@dont-email.me> <20240531173437.00003bee@yahoo.com> <v3d3ct$2b5sl$1@dont-email.me> <v3d97c$2c6ea$1@dont-email.me> <22r6O.5934$xPJ1.2590@fx09.iad> <v3t6nu$1liet$1@dont-email.me> <v3tlmo$1o860$7@dont-email.me> <v427sv$2no3h$1@dont-email.me> <v42cs4$2pjrh$1@dont-email.me> <20240609124032.00004eb1@yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Sun, 09 Jun 2024 12:20:11 +0200 (CEST) Injection-Info: dont-email.me; posting-host="c28d470d38d584b11aaddf66f652d961"; logging-data="3579349"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18w7r3qqRhrikH1palkGiwb" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:1TfPJqvhW0yU0kkb5ngvkJePLjE= Content-Language: en-GB In-Reply-To: <20240609124032.00004eb1@yahoo.com> Bytes: 4515 On 09/06/2024 10:40, Michael S wrote: > On Sat, 8 Jun 2024 14:52:26 -0500 > BGB <cr88192@gmail.com> wrote: > >> On 6/8/2024 1:28 PM, Malcolm McLean wrote: >>> On 07/06/2024 01:53, Lawrence D'Oliveiro wrote: >>>> On Thu, 6 Jun 2024 15:38:21 -0500, BGB-Alt wrote: >>>> >>>>> *2: Seemingly the main way I am aware of to get small binaries is >>>>> to use an older version of MSVC (such as 6.0 to 9.0), as the >>>>> binary-bloat started to get much more obvious around Visual >>>>> Studio 2010, but is less of an issue with VS2005 or VS2008. >>>> >>>> Newer version of proprietary compiler generates worse code than >>>> older version?!? >>> If the code is calling extern gunctions that do IO, we woul expect >>> these to be massively more sophisticated on a modern ststem Witha >>> little comouter, pribtf just wtites acharacter raster and utimalthe >>> he Os picks the up and flushes it out to a pixel raster. And that' >>> aal it's doing. Whilst on a modrern syste, stdout can do whole lot >>> of intricate things. >> >> That is a whole lot of typos... >> >> >> But, even if it is built calling MSVCRT as a DLL (rather than static >> linked), modern MSVC is still the worst of the bunch in this area. >> >> A build as RISC-V + PIE with a static-linked C library still manages >> to be smaller than an x64 build via MSVC with entirely dynamic-linked >> libraries. >> >> And, around 72% bigger than the same program built as a >> dynamic-linked binary with "GCC -O3" (while also often still being >> around 40% slower). >> > > GCC on Windows or on Linux? > In my experience, gcc on Windows (ucrt64 variant, other gcc variants > are worse) very consistently produces bigger (stripped) exe than even > latest MSVCs which, as you correctly stated, are not as good as older > versions at producing small code. > > The size of 'Hello, world' program (x86-64, dynamically linked C RTL) > vs2013 - 6,144 bytes > vs2019 - 9,216 bytes > gcc (Debian Linux, -no-pie) - 14,400 bytes > gcc (Debian Linux) - 14,472 bytes > gcc (ucrt64 DLL) - 18,432 bytes > gcc (old DLL) - 42,496 bytes I get a lot worse than that: C:\c>gcc hello.c C:\c>dir a.exe 09/06/2024 11:04 367,349 a.exe C:\c>gcc hello.c -s -Os C:\c>dir a.exe 09/06/2024 11:04 88,064 a.exe (It didn't like -Oz; did you mean something other than -Os?) Both import msvcrt.dll. gcc is version 10.3.0. tcc gives 2KB, and mcc gives 2.5KB. (With the latter, I know it is because it uses a comprises 5 blocks of data each of which is at least 512 bytes: 2 for header stuff, plus always 3 segments. The mininum hello.exe size I think is 700 bytes if a few corners are cut.) 367KB sounds astonishing, but the first time I tried Dart, it gave me a 5MB executable for 'hello.dart'.