ashvardanian / ashvardanian/less_slow.cpp
Symmetric Transfer in Coroutines
- Dominant language
- C++
- Stars
- 1.9k
- Forks
- 83
- PR merge metrics
- No merged PRs in 30d
Description
I believe the performance of the coroutine implementation in the benchmark can be significantly improved, to at least match the throughput of [experimental coroutines in Rust](https://github.com/ashvardanian/less_slow.rs/blob/132de76ff7c8a852c2381615ce57f24f5d1706b7/less_slow.rs#L355-L429). The current implementation is relatively minimal, uses `std::suspend_always`, and implements no Symmetric Transfer.
Changing those can help accelerate the benchmarked pipeline. To learn more about coroutine implementations, the [Deciphering C++ Coroutines talk by Andreas Weis from CppCon 2022](https://youtu.be/J7fYddslH0Q?si=f-MHR0-FdtZ9-sHD) is a good start.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by locating and running the benchmarked coroutine pipeline, then read its current coroutine implementation and compare it with the linked experimental Rust coroutines. Review the Deciphering C++ Coroutines talk for symmetric transfer and suspend behavior. Done means the C++ benchmark uses the improved coroutine approach and reaches throughput comparable to the stated Rust reference.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- performance
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100