ashvardanian / ashvardanian/less_slow.cpp

Symmetric Transfer in Coroutines

Open
#15 0 comments 0 reactions 0 assignees View on GitHub
enhancement help wanted invalid
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.