[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: The size of ‘.go’ files
From: |
Andy Wingo |
Subject: |
Re: The size of ‘.go’ files |
Date: |
Wed, 24 Jun 2020 14:11:14 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
Hi :)
On Tue 09 Jun 2020 18:09, Ludovic Courtès <ludo@gnu.org> writes:
> Andy Wingo <wingo@igalia.com> skribis:
>
>> The guile.arities section starts with a sorted array of fixed-size
>> headers, then is followed by a sequence of ULEB128 references to local
>> variable names, including non-arguments. The size is a bit perplexing,
>> I agree. I can think of a number of ways to encode that section
>> differently but we'd need to understand a bit more about it and why the
>> baseline compiler is significantly different.
>
> ‘.guile.arities’ size should be proportional to the number of
> procedures, right? Additionally, if there are only/mostly thunks, the
> string table for argument names should be small if not empty. For N
> thunks, I would expect roughly N 28-byte headers + NxM UL128, say 100
> bytes per thunk; there’s 1000 of them, so we should be ~100,000 bytes.
> This is roughly what we get observe with the baseline compiler.
Yes but that doesn't mean that you can directly compare baseline to CPS
-- CPS has many more intermediate names than baseline for non-argument
locals, all of which end up getting entries in the arities section.
Andy