-
Notifications
You must be signed in to change notification settings - Fork 10
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
Add Libseff Benchmarks #58
Add Libseff Benchmarks #58
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good. I haven't studied it in great detail yet. A few things stand out:
- You seem to always count backwards in loops, e.g.
i = N; i > 0; i--
. I suggest counting forward instead, it matters for performance when you use the iterator variablei
to index into an array. - Mark non-public functions with
static
, i.e. every function except formain
, I think.
This reverts commit 2ae033f.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks everyone for your input, I've looked everything over one last time and it LGTM :)
I have implemented the following benchmarks in libseff:
I have also added a Dockerfile and updated the root level Makefile as to allow for building and running a libseff container. Have a look and let me know what you think! I tried to maintain a balance between staying close to the other implementations and making use of idiomatic C structures where possible (loops instead of recursion where the required concept was just a simple loop).
Finally, I updated the README as required. I placed a minus sign for nqueens, tree explore and triples, because they require multi-shot continuations which libseff does not support as far as I know.
Note: the libseff repo (https://github.com/effect-handlers/libseff.git) makes use of
clang-10
, so I have mirrored this in the Dockerfile / Makefiles, although the associated paper referencesclang-12
. This required using Ubuntu 18.04 instead ofubuntu-latest
as the base Docker image.