eyereasoner / eye

Euler Yet another proof Engine
https://eyereasoner.github.io/eye/
MIT License
124 stars 17 forks source link

How to pin down performance bottleneck? #97

Closed renyuneyun closed 6 months ago

renyuneyun commented 1 year ago

I'm using (JS distribution of) eyereasoner and am seeing some weird performance differences in my benchmark -- two almost duality rules have significantly different performance (by duality, I mean for example M /\ B /\ ~C ==> X and M /\ C /\ ~B ==> Y). I'm wondering how can I pin down the performance bottleneck, and maybe form a more concrete issue report?

Currently, I'm only aware of the time output of the command line version. Is there a particular switch that examines the (cumulative) time taken for a particular rule? I remember SWI-Prolog does have that, but am not sure about the case for eye?

I'm using RDF Surfaces as well. If the tool can cover surfaces (in particular, two nested negative surfaces, representing a material implication), that would be even better.

josd commented 1 year ago

What can help is the --profile command line switch. Hmm... I just discovered that it is broken so I fixed it in EYE v6.1.3 (2023-10-23) but mind that this is in the major new release 6.0 in which blank node graffiti for rdfsurfaces is now having a special _label syntax, see e.g. https://github.com/eyereasoner/eye/blob/master/reasoning/blogic/socrates.n3