shrub/pkg
Philip Monk 7ded3f127c
noun: don't add identical values to song_x_cape's hashtable
We were unconditionally adding equal items to the hashtable of
already-compared pointers.  This table exists so that if we've already
determined two non-pointer-equal nouns are value-equal, we don't have to
check them again.  However, atoms (especially direct) ended up in this
hashtable even though we don't look those up.  This makes sure we don't
add items to the hashtable if they're "pointer"-equal (which for direct
atoms is value-equal).

The impact of this inefficiency was greatly magnified by the issue with
+mug where (mug a a) = (mug b b) for all a, b.  For this reason, these
identical pairs added to the hashtable always had the same mug, so they
were added to the same bucket, which meant adding to that list required
linearly traversing the entire bucket.

This was the first barrier that was causing |pack to take a long time on
ships which distribute OTAs, but it isn't a complete solution for |pack.
2020-07-15 12:33:54 -07:00
..
arvo chat-store: don't trim on %messages, either 2020-07-03 11:22:16 +02:00
ent Add 'pkg/ent/' from commit '31ac2913f14c6f7631f5792ad942605fb2d9fb87' 2019-03-04 16:49:14 -08:00
ge-additions Pull in latest v0.8.0.rc changes 2019-07-16 15:59:39 -07:00
herb Squashed commit of the following: 2020-06-25 03:25:31 -04:00
hs Merge pull request #2830 from urbit/king-https-fix 2020-04-30 13:08:13 -07:00
interface chat: fix sigil overlay perf issue 2020-07-02 13:49:06 +10:00
libaes_siv jets: switch openssl to the loom allocator. 2020-05-29 15:51:53 -07:00
urbit noun: don't add identical values to song_x_cape's hashtable 2020-07-15 12:33:54 -07:00