-
-
Notifications
You must be signed in to change notification settings - Fork 39
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
Added Github Actions CI #17
base: main
Are you sure you want to change the base?
Conversation
Wow, what a difference with resume. Thanks for spotting and all the time and effort you invested into the "coroutine business"! |
I went a totally different direction instead, moved most of my ideas into https://github.com/symplely/c-coroutine. The library here has too many shortcomings, and can't move belong the not so low level. |
@TheTechsTech Could you please write more here about the differences, including summary of the ideas and various changes? The pros/cons of the tradeoffs, what kind of work is necessary to go from what's in mini_coro.h to what you have there? |
Specifically, I'm interested in performance related changes. So if you have other changes going on about the API or making things higher level, I would be really interested in separating those from any perf related stuff. |
I suspect he measured i686 which has no assembly backend, not x86_64, or measured some noise. I don't bet in 6x factor speed-up unless he is not saving floating point state (which is dangerous) or doing some other dangerous trick. I already measured before that on x86_64 Windows and it took 33 CPU cycles which was already pretty low, 6x factor speedup would mean in a switch in ~5.5 CPU cycles and I don't think that is doable. I would not bother switching to something that says to be more optimized than minicoro, minicoro is already pretty efficient when using the assembly backend and there is not much room to optimize further without consequences or feature removal. Unless you really need to target x86 32-bit which is not supported yet for the assembly backend. |
The
coro_timing.c
is comparing sub functions calls to coroutine calls.This mco_resume is much slower, library needs optimizing, test converted from https://github.com/higan-emu/libco/blob/master/doc/examples/test_timing.cpp
minicoro:
libco: