eth-sri / securify2

Securify v2.0
Apache License 2.0
579 stars 133 forks source link

Performance / Tune rules with .plan #6

Open b-scholz opened 4 years ago

b-scholz commented 4 years ago

Great that you use Souffle in your project. I am the lead of the Souffle project and noticed that you haven't tuned your rules for performance. We have some documentation about performance tuning:

https://souffle-lang.github.io/tuning

If you need further help, send me an email to Bernhard.Scholz@sydney.edu.au.

YannisSach commented 4 years ago

Thank you very much for the information. Would it be possible to point any specific rules in our implementation that could be benefited by the tuning?

b-scholz commented 4 years ago

You need to run the profiler first:

https://souffle-lang.github.io/profiler

Use a serious workload (e.g. run the whole blockchain as an input case).

In the profiler you will see that only a handful of rules will dominate the runtime. To improve the runtime of these rules, you will most likely need to write your own .plan statements to specify an optimal schedule.

Send me your profile file and I am happy to work with you on the scheduling problem.