To achieve high performance in Soufflé, the Auto-Scheduler can be used.
The Auto-Scheduler can be used as follows:
souffle <program> -p <profile> --emit-statistics
souffle -c <program> --auto-schedule=<profile> -o <binary>
Stage 1 runs the Soufflé interpreter and gathers statistics about relations during the program’s execution, saving them to a profile.
Note that either the interpreter or synthesizer can be used to collect statistics. Both modes of execution will produce the same statistics.
Stage 2 reads in the profile with statistics, uses these statistics to determine high performance schedules and finally synthesizes a binary that uses the derived schedules.
Note that either the interpreter or synthesizer can be used for auto-scheduling.