The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: crossd@gmail.com (Dan Cross)
Subject: [TUHS] termcap vs terminfo
Date: Tue, 6 Jan 2015 12:53:27 -0500	[thread overview]
Message-ID: <CAEoi9W5sGmqxjQornM8izVbwSdQ-rD9UcPS8SZPFeT6FcMxYog@mail.gmail.com> (raw)
In-Reply-To: <54AC1C78.6090007@update.uu.se>

On Tue, Jan 6, 2015 at 12:33 PM, Johnny Billquist <bqt at update.uu.se> wrote:

> On 2015-01-06 17:56, Dan Cross wrote:
>>
>> I believe that Mary Ann is referring to repeatedly looking up
>> (presumably different) elements in the entry.  Assuming that e.g. `vi`
>> looks up O(n) elements, where $n$ is the number of elements, doing a
>> linear scan for each, you'd end up with quadratic behavior.
>>
>
> Assuming that you'd look up all the elements of the termcap entry at
> startup, and did each one from scratch, yes.


Yes.  Isn't that exactly what Mary Ann said was happening?  :-)

 Hashing, or storing in some kind of balanced-tree like structure or
>> something, would of course help but would also necessitate doing a copy
>> and would entail some additional memory inefficiency.
>>
>
> Hashing would indeed cause some extra memory, but not necessarily any
> copying.
>

I fail to see how you can avoid copying the data out of the environment
vector (unless you intend to either (a) turn the env var into a hash table,
or (b) store pointers to the datum in the env var, but you'd need to encode
their length somehow.  I don't think environment variables can contain
embedded NULs, can they?).

But that would beg the question, why is vi doing a repeated scan of the
> terminal entry at startup, if not to find all the capabilities and store
> this somewhere? And if doing a look for all of them, why not scan the
> string from start to finish and store the information as it is found? At
> which point we move from quadratic to linear time.
>

I don't think she said it did things intelligently, just that that's how it
did things.  :-)

But now we're getting into the innards of vi, which I never looked at
> anyway, and I guess is less relevant in this thread anyway.
>
> The short of it (from what I got out of it) is that the move from termcap
> to terminfo was mostly motivated by attribute name changing away from fixed
> 2 character names.
>
> A secondary motivation would be performance, but I don't really buy that
> one. Since we only moved to terminfo on systems with plenty of memory,
> performance of termcap could easily be on par anyway.
>

I tend to agree with you and I'll go one further: it seems that frequently
we tend to identify a problem and then go to 11 with the "solution."  I can
buy that termcap performance was an issue; I don't know that going directly
to hashed terminfo files was the optimal solution.  A dbm file of termcap
data and a hash table in whatever library parsed termcap would go a long
way towards fixing the performance issues.  Did termcap have to be
discarded just to add longer names?  I kind of tend to doubt it, but I
wasn't there and don't know what the design criteria were, so my
very-much-after-the-fact second guessing is just that.

Thanks for the insights.
>
>         Johnny
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20150106/bd279a0f/attachment.html>


  reply	other threads:[~2015-01-06 17:53 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.143.1420561935.3354.tuhs@minnie.tuhs.org>
2015-01-06 16:51 ` Johnny Billquist
2015-01-06 16:56   ` Dan Cross
2015-01-06 17:33     ` Johnny Billquist
2015-01-06 17:53       ` Dan Cross [this message]
     [not found] <1FD28B19-FA50-4581-BB0A-257B5DDE1890@kdbarto.org>
2015-01-10 22:15 ` [TUHS] Termcap " David Barto
2015-01-10 22:43   ` Lyndon Nerenberg
2015-01-10 22:51     ` Lyndon Nerenberg
2015-01-10 23:02     ` Christian Neukirchen
2015-01-10 23:04       ` Lyndon Nerenberg
2015-01-11 16:48         ` Christian Neukirchen
2015-01-11  2:06     ` Dave Horsfall
2015-01-11  9:16       ` Diomidis Spinellis
2015-01-12 15:36       ` Clem Cole
2015-01-06 21:32 [TUHS] termcap " Mary Ann Horton
  -- strict thread matches above, loose matches on Subject: below --
2015-01-01 17:04 [TUHS] termcap vs terminfo (was: I swear! I rtfm'ed) Warner Losh
2015-01-02 19:13 ` Erik E. Fair
2015-01-05  7:06   ` Peter Jeremy
2015-01-06  0:40     ` John Cowan
2015-01-06 12:22       ` arnold
2015-01-06 16:02         ` [TUHS] termcap vs terminfo Mary Ann Horton
2015-01-06 17:12           ` arnold

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAEoi9W5sGmqxjQornM8izVbwSdQ-rD9UcPS8SZPFeT6FcMxYog@mail.gmail.com \
    --to=crossd@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).