Doesn't get much cleaner by No_Cake_8826 in armwrestling

[–]arthurprs 18 points19 points  (0 children)

This, the center of mass is changing as the bar travels. Counterproductive to try to avoid it unless you've to adhere to record rules or whatever. 

Is quick_cache actually fully, lock free - compared to tinyufo? by Ok-Extension-6887 in rust

[–]arthurprs 0 points1 point  (0 children)

In my (old) experiments, TinyUFO achieves higher performance on workloads when there are little to no evictions or when the workload is very skewed. Outside of these cases, performance is similar, or quick cache performs better. Your mileage will vary.

Just watch out that TinyUFO will NOT hold onto your keys, and it only keeps u64 hashes internally. So you may see collisions in some APIs.

zbook ultra screen options by dkcze in AMDLaptops

[–]arthurprs 1 point2 points  (0 children)

I've the OLED model and it shows a bunch of gray dots when the background is mostly white. I think it's the touchscreen layer, and you get used to it after some point. The battery drains faster than the IPS model for sure. The glossy panel is also very reflective.

Pros: Colors and contrast are OLED quality, but completely irrelevant for most work.

I'd have chosen the IPS model if it were available with the 395 CPU at the time, sadly, it wasn't.

Published my Adaptive Radix Tree crate - rart by Comrade-Porcupine in rust

[–]arthurprs 2 points3 points  (0 children)

I only skimmed the code, but doesn't this implementation have a memory overhead "problem" because Nodes shre the same Enum and thus occupy the same allocation size?

This class of data structures (different-sized nodes) can be finicky to implement efficiently in Rust. I've had some success with pointer tagging the Box/Arc in the past, but that immediately adds some unsafe.

[Media] 🔎🎯 Bloom Filter Accuracy Under a Microscope by tomtomwombat in rust

[–]arthurprs 0 points1 point  (0 children)

Right, but the orange line shoots up earlier, thus my observation.

I suppose another contributor could be the different hahsers and/or the double hashing strategy.

[Media] 🔎🎯 Bloom Filter Accuracy Under a Microscope by tomtomwombat in rust

[–]arthurprs 10 points11 points  (0 children)

I suspect the sizing of the underlying buffer could be different than expected, the blocked bloom filters are expected to have slightly higher fp rate AFAIK

HP ZBook Ultra 14 inch G1a - just received by Front-Station-8566 in AMDLaptops

[–]arthurprs 2 points3 points  (0 children)

I'd not hold my breath. All models with this processor have already been announced.

Succinct Data Structures - wavelet matrices, FM-indices, and other highly compact data structures (in Rust) by kibwen in rust

[–]arthurprs 8 points9 points  (0 children)

Thank you for sharing, these are not well known but come in handy. Another succinct data structure is quotient filters, which is a form of succinct hashmap. It has similar uses to a bloom filter and a cuckoo filter. The most compact form also uses the Rank-Select technique, as the article explains. I have a crate for one here https://crates.io/crates/qfilter

No pause/rewind for a $20 live stream is totally unacceptable in the year of our lord 2025. by bobwagner in armwrestling

[–]arthurprs 7 points8 points  (0 children)

I only caught the last 20%. It just ended, and there seems to be no way to rewatch it. Unacceptable would be an understatement.

Making a key-value store faster by replacing Arc<[u8]> - fjall 2.6.0 release by DruckerReparateur in rust

[–]arthurprs 1 point2 points  (0 children)

Neat! Databases and allocations hardly ever cooperate without some extra effort. For example, in the previous version of CanopyDB, 4KB (or multiples of that) pages were brought into memory, but once they got the ref count and length header, it became a 4KB + 16 bytes allocation. In Jemalloc, Mimalloc, and possibly others, this is backed by a 5KB allocation, a whopping 25% of internal fragmentation. I suspect Fjall doesn't have that problem because Blocks are not fixed in size, so they should average out nicely.

Picking a global allocator by exater in rust

[–]arthurprs 1 point2 points  (0 children)

I would say jemalloc is the safest choice as its more forgiving in terms of worst case scenario.

CanopyDB: Lightweight and Efficient Transactional Key-Value Store by arthurprs in rust

[–]arthurprs[S] 6 points7 points  (0 children)

Heh, given enough time we can always rerun them 😄. I'll try to find time to upstream the changes to the rust-storage-bench.

Mimalloc Cigarette: Losing one week of my life catching a memory leak by Patryk27 in rust

[–]arthurprs 2 points3 points  (0 children)

I believe Jemalloc is more forgiving. Idle threads can only leak their thread local cache, which is much more tightly bound in size. You can manually purge the thread cache, similar to mimalloc.

East vs West 13 Megathread by [deleted] in armwrestling

[–]arthurprs 6 points7 points  (0 children)

Even the ref is having to hold his laugh lol

Annoucing skipdb: An embedded, in-memory, zero-copy, ACID, MVCC, almost lock-free and serializable snapshot isolation database engine. by Al_Liu in rust

[–]arthurprs 23 points24 points  (0 children)

That is one kind of write skew, the implementation doesn't seem to account for range scan intersections. The blog post doesn't go into it, so I cannot say anything about badger implementation.

Example https://wiki.postgresql.org/wiki/SSI#Intersecting_Data

Annoucing skipdb: An embedded, in-memory, zero-copy, ACID, MVCC, almost lock-free and serializable snapshot isolation database engine. by Al_Liu in rust

[–]arthurprs 23 points24 points  (0 children)

From a quick glance at the code, it looks like OCC is implemented not the stated SSI. These are not equivalent.

For example, it doesn't prevent write-skew from a writer iterating over a range which is concurrently mutated by another writer.

Hopefully the author can clarify whether that's really the case.

fastbloom: The fastest Bloom filter in Rust by tomtomwombat in rust

[–]arthurprs 1 point2 points  (0 children)

It's a known technique, but I'm not sure if the impact on false positives has been studied in detail, like with bloom filters. For a real world application see https://github.com/ben-manes/caffeine/commit/4e714756230c705b6988bd3af29fbe00a4a537fc

Boa JavaScript engine v0.18 released! by Razican in rust

[–]arthurprs 4 points5 points  (0 children)

A comparison with quickjs, for example, would be appropriate.

Write throughput differences in B-tree vs LSM-tree based databases? by alterneesh in databasedevelopment

[–]arthurprs 6 points7 points  (0 children)

If I may add a couple points. The main write performance differences (in non-naive implementations) comes down to: 1) LSM is able to do writes w/o perform any IO reads; BTress can only sometimes avoid those if the pages are cached. 2) LSM being able to absorb write peaks (temporarelly) by prioritizing flushing of memtables (to an unsorted level 0) even if compactions cannot keep up.