Benchmarking struct (Work in progress)

At InvariantPerformance a benchmark is proposed for testing and comparing invariant calculation by a number of tools, including GreatSPN (gspn), ItsTools, PetriSpot and TINA.struct (with and without the 4ti2 option);

As often in such studies, the choices made among the many available options may be non optimal for some tools, understandably. The study is nethertheless useful as a starting point; many thanks to the authors. We present in this page a revised set of comparisons after fixing some minor issues with the test scripts, tuning parameter choices for TINA.struct, and finally taking advantage of recent improvements of tool struct, prompted by this benchmark.

More precisely:

To reproduce the results below, proceed as explained in InvariantPerformance but use the scripts run.sh and logs2csv.pl below instead of those provided there:

Then, to compute the table below, call script reports.sh in folder logs; this produces several markdown files, including file report-c.md, from which the table below is extracted.

Notes: in the tables below:

sizes in ]0,1000]

Tool Failure time ovf mem unk Success Total
GreatSPN 13 0 12 0 1 828 841
PetriSpot32 7 0 7 0 0 834 841
PetriSpot64 2 0 2 0 0 839 841
PetriSpot128 2 0 2 0 0 839 841
tina 5 5 0 0 0 836 841
tina4ti2 0 0 0 0 0 841 841

sizes in ]0,2000]

Tool Failure time ovf mem unk Success Total
GreatSPN 14 0 13 0 1 942 956
PetriSpot32 9 0 9 0 0 947 956
PetriSpot64 2 0 2 0 0 954 956
PetriSpot128 2 0 2 0 0 954 956
tina 10 10 0 0 0 946 956
tina4ti2 0 0 0 0 0 956 956

sizes in ]0,5000]

Tool Failure time ovf mem unk Success Total
GreatSPN 15 0 14 0 1 1110 1125
PetriSpot32 10 0 10 0 0 1115 1125
PetriSpot64 2 0 2 0 0 1123 1125
PetriSpot128 2 0 2 0 0 1123 1125
tina 21 21 0 0 0 1104 1125
tina4ti2 0 0 0 0 0 1125 1125

sizes in ]0,10000]

Tool Failure time ovf mem unk Success Total
GreatSPN 16 0 15 0 1 1204 1220
PetriSpot32 13 0 13 0 0 1207 1220
PetriSpot64 5 0 5 0 0 1215 1220
PetriSpot128 5 0 5 0 0 1215 1220
tina 29 29 0 0 0 1191 1220
tina4ti2 0 0 0 0 0 1220 1220

sizes in ]0,20000]

Tool Failure time ovf mem unk Success Total
GreatSPN 18 0 17 0 1 1262 1280
PetriSpot32 16 0 16 0 0 1264 1280
PetriSpot64 6 0 6 0 0 1274 1280
PetriSpot128 6 0 6 0 0 1274 1280
tina 63 63 0 0 0 1217 1280
tina4ti2 1 1 0 0 0 1279 1280

sizes in ]0,50000]

Tool Failure time ovf mem unk Success Total
GreatSPN 27 9 17 0 1 1335 1362
PetriSpot32 18 0 18 0 0 1344 1362
PetriSpot64 6 0 6 0 0 1356 1362
PetriSpot128 6 0 6 0 0 1356 1362
tina 105 100 0 5 0 1257 1362
tina4ti2 47 20 0 27 0 1315 1362

sizes in ]0,max]

Tool Failure time ovf mem unk Success Total
GreatSPN 69 51 17 0 1 1355 1424
PetriSpot32 30 9 21 0 0 1394 1424
PetriSpot64 17 9 8 0 0 1407 1424
PetriSpot128 17 9 8 0 0 1407 1424
tina 155 132 0 23 0 1269 1424
tina4ti2 109 30 0 79 0 1315 1424

For benchmarkings semiflow computations instead of flows, use instead scripts (in progress):

Computing semiflows is more expensive than computing flows; the current results are:

sizes in ]0,1000]

Tool Failure time ovf mem unk Success Total
GreatSPN 274 262 11 0 1 567 841
PetriSpot64 126 2 2 0 122 715 841
tina 273 112 0 161 0 568 841
tina4ti2 201 153 0 48 0 640 841

sizes in ]0,2000]

Tool Failure time ovf mem unk Success Total
GreatSPN 370 358 11 0 1 586 956
PetriSpot64 163 2 2 0 159 793 956
tina 366 152 0 214 0 590 956
tina4ti2 297 218 0 79 0 659 956

sizes in ]0,5000]

Tool Failure time ovf mem unk Success Total
GreatSPN 481 469 11 0 1 644 1125
PetriSpot64 233 2 2 0 229 892 1125
tina 494 243 0 251 0 631 1125
tina4ti2 452 332 0 120 0 673 1125

sizes in ]0,10000]

Tool Failure time ovf mem unk Success Total
GreatSPN 551 539 11 0 1 669 1220
PetriSpot64 272 2 5 0 265 948 1220
tina 577 306 0 271 0 643 1220
tina4ti2 547 397 0 150 0 673 1220

sizes in ]0,20000]

Tool Failure time ovf mem unk Success Total
GreatSPN 600 588 11 0 1 680 1280
PetriSpot64 293 8 6 0 279 987 1280
tina 634 363 0 271 0 646 1280
tina4ti2 606 452 0 154 0 674 1280

sizes in ]0,50000]

Tool Failure time ovf mem unk Success Total
GreatSPN 673 661 11 0 1 689 1362
PetriSpot64 322 26 6 0 290 1040 1362
tina 711 405 0 306 0 651 1362
tina4ti2 688 523 0 165 0 674 1362

sizes in ]0,max]

Tool Failure time ovf mem unk Success Total
GreatSPN 734 722 11 0 1 690 1424
PetriSpot64 345 42 8 0 295 1079 1424
tina 773 444 0 329 0 651 1424
tina4ti2 750 563 0 187 0 674 1424

As for flows, GreatSPN and TINA.struct compute the same semiflows ("by the book"), while PetriSpot computes semiflows after a reduction pass removing most redundant places or transitions.