freenode/#shirakumo - IRC Chatlog
Search
16:30:25
Shinmera
A lockless hash table /is/ lockless, but that doesn't necessarily mean it's very fast.
16:31:14
Shinmera
But if other sporting folks are willing to document it, I'd be all for releasing it.
16:31:27
mfiano
Right, I did some testing with sbcl's locking and my broad-phase goes from 3.2ms/frame to 0.4ms/frame for a particular test scene.
16:34:33
Colleen
github.com/no-defun-allowed... Website (HTML), Title: GitHub - no-defun-allowed/luckless: Lockless data structures for Common Lisp
19:39:53
Colleen
reader.tymoon.eu/article/395 Website (XHTML), Title: Slicing Up the Game - April Kandria Update - 妖怪世捨て人
21:57:07
no-defun-allowed
ACTION uploaded an image: (58KiB) < https://matrix.org/_matrix/media/r0/download/matrix.org/iIDWDHsqALcbLgaWMgWeWlVO/why-is-the-shinmera-screaming.jpg >
21:57:39
no-defun-allowed
mfiano: I think Luckless will be faster than SBCL's hash table with locking, though I would like to make it faster.
22:01:03
no-defun-allowed
Sometimes it rarely blows the stack trying to recursively resize or something. Though, with my tests, it probably should run out of heap before it's possible to resize that many times, so something very bad is happening.
22:02:23
no-defun-allowed
Just in mine, because I meddled with the resize heuristics and that makes it more likely to fail to resize.
22:05:22
no-defun-allowed
(Also, I had removed the SIMD stuff from my own implementation, using only portable atomics, and it was still faster than Luckless, so I am aware there is some way to speed it up. Though my own table is not wait-free; I don't get wait-free resizing honestly.)
22:19:49
no-defun-allowed
I believe it's wait free, as all operations are guaranteed to eventually succeed.
22:21:39
no-defun-allowed
The difference is that my resizing procedure expects threads to not disappear while resizing, so if one thread disappears with one unit of resizing work, it'll never be done, but Cliff manages that somehow (but possibly has to copy twice).
22:25:05
no-defun-allowed
That now explains why he has a wrapper object for copied values, instead of just blotting them out of the table, but I am a bit saddened that the "read barrier" can't be an EQ test (which is ever so slightly faster). Oh well. Bet it works out better to be wait-free with more threads.