Subject: Re: bug#45926: Tabulated-list-mode wasteful properties

From: "Basil L. Contovounesios" <[email-masked]>
Date: Sun, 17 Jan 2021 13:40:02 +0000

Boruch Baum <[email-masked]> writes:

> Tabulated lists can grow quite large. In fact, the most common use for
> the mode is the *Packages* buffer listing, which for me today clocks in
> at 5211 lines * five columns. In the case of the *Packages* buffer, Performing
>
>    (buffer-substring (point) (line-end-position))
>
> on a sampling of lines yields 'PP eval' buffers of length ~500 - ~700
> characters.
>
> Most of this looks to me to be unnecessary duplicate data. In using the
> mode for my own purpose, I see that the mode is putting all data of all
> columns in an entry (row) in each and every single column, ie the size
> grows exponentially by number of columns (in my personal case, ten
> columns).
>
> This isn't breaking anything, but it looks like bad design unnecessarily
> hogging memory and filling buffers with cruft.

Are you sure the data is actually duplicated and doesn't share
structure?  I evaluated that expression over the xref package, and got
the attached string.  Nothing looks obviously duplicated, except for the
shared #N= and #N# structures.  Also, some of the repetition of shared
structures is probably just due to how string intervals are
represented/printed.

Not that any of this is necessarily optimal, of course, but it's not
immediately alarming to me, either, unless I'm missing something.

-- 
Basil