-
Notifications
You must be signed in to change notification settings - Fork 29
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
bearriver
: Integration Performance
#233
Comments
I'm looking into this. Thanks! |
@RiugaBachi I was experimenting a bit over the weekend. Here's some thoughts:
The above cuts the execution time by more than half. Note however that profiling with just one SF and profiling with an actual game are two completely different beasts. @mathandley and I also saw big wins for Yampa with just a few SFs, but then with whole applications BR won by a lot. This seems like a lot of work, but it's unavoidable for any FRP implementation in the long run (you can come up with a better construct for a particular problem, but it will be lacking for other problems, so you'd need to do this for it anyway). My expectation is that, if we have an acceptable battery of benchmarks and a way to benchmark that helps us keep track of the results, we'll be able to profile and optimize both dunai and bearriver really, really well. |
i have opened a new issue on Yampa to start working on this and track progress. Due to the obvious connection between the two frameworks, I expect this to help us 1) compare dunai and Yampa, and 2) apply similar ideas to dunai so that we can improve the performance of dunai as well. |
I know this has been a long standing issue, so I'm just writing so people know there's progress going on. I currently have a small benchmark, together with a way of comparing it to the result of the prior benchmark. I've done this for Yampa, but the results should translate. Hopefully, this will give us a measure of how much better/worse a change is, and help us start making decisions based on real data. We can later improve the quality of those decisions by improving the benchmarks in terms of coverage, depth, and their reliability. |
bearriver
: Integration Performance
I have a whole benchmark suite that I wrote half a year ago, but could not bring myself to write an issue on here regarding all the performance issues I've encountered with
bearriver
. With more time during this coronavirus situation however, I believe I wouldn't mind tackling the issues one at a time. I'm bringing up my double integration subgroup first as it is the most trivial of the bunch.Freshly tested on GHC 8.8.3 w/
-O2 -threaded -rtsopts
. As for my hypothesis, perhaps monad optimizations do not play well with an actuator that constantly checks for termination based on the SF output.Relevant code:
I don't wish to discuss my definition of
Plain
yet for this as it is basically on par with Yampa's performance in this test, making it irrelevant.The text was updated successfully, but these errors were encountered: