top | item 30466806

(no title)

xroche | 4 years ago

> And if you really want it, it's not terribly hard to write

Sure, but basically it means rewriting all structures that rely on a bucket of stuff.

By the way maps often use a large bucket, and rehash in-place can be preferable.

> Which not many do, not unless the allocation is so large as to be in its own dedicated mmap

Do you know a modern operating system that does not have a mremap equivalent ?

On Linux you pretty much use it as soon as you reach large blocks.

discuss

order

kllrnohj|4 years ago

> By the way maps often use a large bucket, and rehash in-place can be preferable.

std::unordered_map (what I'm guessing you meant by a hashmap) uses a linked list for the nodes. There's no movement in the first place to worry about being realloc'd.

> Do you know a modern operating system that does not have a mremap equivalent ?

You have to be very large before most mallocs will put you on a dedicated mmap that can even be mremap'd at all.

If you're working with stonking huge data inline in a std:: vector... Yeah just make a container for that usage, not really an issue. There's tons of examples out there, typically to add SSO but doing realloc would be the same basic thing.