C++ coroutine examples and library comparisons.
| System | Compiler | Status |
|---|---|---|
| Linux | GCC | OK |
| Linux | Clang | cppcoro CMake configure error |
| Windows | MSVC | OK |
| Windows | Clang-cl | cppcoro compile errors |
| ns/op | op/s | err% | total | benchmark |
|---|---|---|---|---|
| 347.17 | 2,880,445.80 | 3.5% | 0.01 | cppcoro: simple_tasks |
| 436.46 | 2,291,147.13 | 1.1% | 0.01 | libcoro: simple_tasks |
| 166.92 | 5,990,983.18 | 0.2% | 0.01 | manual: simple_tasks |
| 1.20 | 835,937,051.56 | 2.4% | 0.01 | reference: simple_tasks |
| ns/op | op/s | err% | total | benchmark |
|---|---|---|---|---|
| 154.23 | 6,484,003.01 | 1.2% | 0.01 | cppcoro: fibonacci |
| 170.62 | 5,861,059.36 | 0.6% | 0.01 | libcoro: fibonacci |
| 69.64 | 14,358,785.65 | 0.5% | 0.01 | manual: fibonacci |
| 7.50 | 133,337,000.68 | 0.9% | 0.01 | reference: fibonacci |
| ns/op | op/s | err% | total | benchmark |
|---|---|---|---|---|
| 3,988.80 | 250,701.77 | 1.2% | 0.01 | cppcoro generator: finite_counter (iterator) |
| 3,991.27 | 250,546.83 | 1.8% | 0.01 | cppcoro generator: finite_counter (range-for) |
| 3,805.26 | 262,793.91 | 0.3% | 0.01 | cppcoro generator: infinite_counter |
| 3,677.57 | 271,918.68 | 1.3% | 0.01 | libcoro generator: finite_counter (iterator) |
| 3,745.11 | 267,014.66 | 2.0% | 0.01 | libcoro generator: finite_counter (range-for) |
| 3,218.10 | 310,742.54 | 1.1% | 0.01 | libcoro generator: infinite_counter |
| 3,141.80 | 318,288.55 | 0.4% | 0.01 | manual generator: finite_counter (iterator) |
| 3,013.14 | 331,879.39 | 0.8% | 0.01 | manual generator: finite_counter (range-for) |
| 3,327.68 | 300,509.34 | 1.5% | 0.01 | manual generator: finite_counter |
| 2,920.77 | 342,375.29 | 2.1% | 0.01 | manual generator: infinite_counter |
| 242.25 | 4,127,918.19 | 4.0% | 0.01 | reference generator: finite_counter |
| 236.82 | 4,222,689.08 | 1.3% | 0.01 | reference generator: infinite_counter |
| 3,680.00 | 271,739.13 | 0.9% | 0.01 | std::generator: finite_counter (iterator) |
| 3,634.17 | 275,166.05 | 0.2% | 0.01 | std::generator: finite_counter (range-for) |
| 3,277.56 | 305,104.64 | 0.1% | 0.01 | std::generator: infinite_counter |
| 3,669.04 | 272,550.92 | 2.0% | 0.01 | concurrencpp generator: finite_counter (iterator) |
| 3,888.67 | 257,157.55 | 0.9% | 0.01 | concurrencpp generator: finite_counter (range-for) |
| 3,334.95 | 299,854.44 | 0.9% | 0.01 | concurrencpp generator: infinite_counter |