Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Colaborate With ft_utils #33

Open
SonicField opened this issue Jan 8, 2025 · 1 comment
Open

Colaborate With ft_utils #33

SonicField opened this issue Jan 8, 2025 · 1 comment

Comments

@SonicField
Copy link

The work here looks great. I see a lot of similarity between the atomics and those in ft_utils. Also, I'd love to learn more about the performance characteristics of the atomicdict.

Would you like to colaborate? How can we work best together? Seems at least we should make the atomic header stuff as common as possible.

Please check out: https://github.com/facebookincubator/ft_utils

All the best - Alex

@dpdani
Copy link
Owner

dpdani commented Jan 9, 2025

Hi Alex 👋

Thank you for reaching out!
I would very much like to collaborate!

As for the performance of AtomicDict, some workloads are quite good now, while others definitely need improving.
In particular, the reduce method can perform very well.
There's the benchmark repo which hosts some performance comparisons.
In general you'll find that some workloads are already better than dict, and that it's still nowhere near the performance of a state of the art C++ hash table (unsurprisingly).
I've written something in my thesis, which is more human readable than plots and numbers, and goes more in depth if you're curious.

The ft_compat.h header that you have looks really neat with those macros, but I'm a bit confused. Don't you use stdatomic or something like that?
For cereggii's atomics I've opened #32 (which has a very thorough description, I know). I'd like to make it header-only and find out if there's a way for cereggii to be distributed so that it's easy for the header to be included by another package. I have absolutely no idea how to do this, but I think if we can work it out together, we can definitely save some time for both of us!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants