2026/07/05

Newest at the top

2026-07-05 10:12:49 +0000 <tomsmeding> but construction just makes no sense
2026-07-05 10:12:38 +0000Coffish(~Coffish@user/Coffish) Coffish
2026-07-05 10:12:34 +0000 <tomsmeding> where the CPU might do some speculative loads
2026-07-05 10:12:18 +0000 <tomsmeding> I can countenance traversal being faster, maybe, for the same reason that GC is possibly faster, namely that there's more regularity (due to TThree)
2026-07-05 10:11:34 +0000 <tomsmeding> but how can that be?!
2026-07-05 10:11:26 +0000 <jaror> It can't be just GC because I'm also seeing speedup on tests that don't exceed the nursery
2026-07-05 10:11:25 +0000eggplantade(~eggplanta@2600:1702:8450:c370:9436:d382:832a:2336)
2026-07-05 10:09:33 +0000 <tomsmeding> significantly more, in fact
2026-07-05 10:09:24 +0000 <tomsmeding> because your cons does strictly more work than (:) :p
2026-07-05 10:08:48 +0000 <tomsmeding> still, where is the speedup coming from? GC?
2026-07-05 10:08:43 +0000divlamir_divlamir
2026-07-05 10:08:43 +0000divlamir(~divlamir@user/divlamir) (Ping timeout: 264 seconds)
2026-07-05 10:08:21 +0000 <tomsmeding> yes that's the only significant difference that I see
2026-07-05 10:08:12 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-07-05 10:07:13 +0000 <jaror> The TThree could be avoiding some of the list cons overhead
2026-07-05 10:06:21 +0000 <jaror> {-# INLINE cons #-}
2026-07-05 10:06:21 +0000 <jaror> cons x xs = LOne x xs
2026-07-05 10:06:21 +0000 <jaror> | n1 == n2 = LNode (n1 + 1) (TNode x t1 t2) xs
2026-07-05 10:06:21 +0000 <jaror> cons x (LNode n1 t1 (LNode n2 t2 xs))
2026-07-05 10:06:21 +0000 <jaror> cons x (LOne y (LOne z xs)) = LNode 1 (TThree x y z) xs
2026-07-05 10:06:21 +0000 <jaror> cons :: a -> List a -> List a
2026-07-05 10:06:21 +0000 <jaror> This is cons:
2026-07-05 10:06:13 +0000divlamir_(~divlamir@user/divlamir) divlamir
2026-07-05 10:06:06 +0000 <jaror> yes
2026-07-05 10:06:01 +0000 <tomsmeding> are those trees always perfectly balanced?
2026-07-05 10:05:06 +0000 <jaror> data List a = LNil | LOne a !(List a) | LNode {-# UNPACK #-} !Int !(Tree a) !(List a) deriving Show
2026-07-05 10:05:06 +0000 <jaror> data Tree a = TThree a a a | TNode a !(Tree a) !(Tree a) deriving Show
2026-07-05 10:04:41 +0000 <tomsmeding> jaror: which implementation of skew binary RALs are you using? I'm looking at the implementation in skew-list and I cannot imagine that is faster than [a] to construct
2026-07-05 10:03:41 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-07-05 10:00:51 +0000__monty__(~toonn@user/toonn) toonn
2026-07-05 09:58:05 +0000eggplantade(~eggplanta@2600:1702:8450:c370:9436:d382:832a:2336) (Ping timeout: 252 seconds)
2026-07-05 09:55:53 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 267 seconds)
2026-07-05 09:52:32 +0000eggplantade(~eggplanta@2600:1702:8450:c370:9436:d382:832a:2336)
2026-07-05 09:48:47 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-07-05 09:43:50 +0000 <jaror> Like for long lists it is 1.3x faster to construct and summing is 3x faster.
2026-07-05 09:43:27 +0000xff0x(~xff0x@2405:6580:b080:900:ffb8:888c:ff12:58a4)
2026-07-05 09:40:39 +0000eggplantade(~eggplanta@2600:1702:8450:c370:9436:d382:832a:2336) (Ping timeout: 253 seconds)
2026-07-05 09:38:26 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 272 seconds)
2026-07-05 09:34:16 +0000eggplantade(~eggplanta@2600:1702:8450:c370:9436:d382:832a:2336)
2026-07-05 09:33:25 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn
2026-07-05 09:31:15 +0000xff0x(~xff0x@2405:6580:b080:900:5dc9:7aaa:6a44:4507) (Ping timeout: 268 seconds)
2026-07-05 09:28:43 +0000 <jaror> I'm benchmarking linked list alternatives and it seems skew binary random access lists are plainly better than lists for everything but streaming
2026-07-05 09:24:50 +0000Coffish(~Coffish@user/Coffish) (Ping timeout: 247 seconds)
2026-07-05 09:24:11 +0000oxapentane(~oxapentan@user/oxapentane) oxapentane
2026-07-05 09:23:39 +0000oxapentane(~oxapentan@git.oxapentane.com) (Remote host closed the connection)
2026-07-05 09:23:26 +0000Lord_of_Life(~Lord@user/lord-of-life/x-2819915) Lord_of_Life
2026-07-05 09:22:38 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) (Ping timeout: 256 seconds)
2026-07-05 09:21:27 +0000YuutaW(~YuutaW@infornography.yta.moe) YuutaW
2026-07-05 09:21:20 +0000eggplantade(~eggplanta@2600:1702:8450:c370:9436:d382:832a:2336) (Ping timeout: 263 seconds)
2026-07-05 09:18:03 +0000merijn(~merijn@host-cl.cgnat-g.v4.dfn.nl) merijn