@@ -134,6 +134,40 @@ fact that the format is more or less universally supported amongst SAT solvers
134134leads some SAT users to use this format, even though there is I/O and parsing
135135overhead by comparison to using a logic library.
136136
137+ # Performance
138+ In applications, SAT problems normally have an exponential tail runtime
139+ distribution with a strong bias towards bigger problems populating the longer
140+ runtime part of the distribution. So in practice, a good rule of thumb is 1 in
141+ N problems will on average take longer than time alotted to solve it for a
142+ problem of a given size, and then one measures N experimentally. Very often,
143+ despite the NP nature of SAT, an application can be designed to use a SAT solver
144+ in a way that problems almost never take too long. Additionally, the hardest known
145+ hand-crafted problems for CDCL solvers which take significant time involve at least
146+ a few hundred variables. So if you're application has only a few hundred variables,
147+ you're probably not going to have any performance problems at all with any solver.
148+
149+ As in almost every solver, the core CDCL solver in Gini is the workhorse and is a
150+ good general purpose solver. Some specific applications do benefit from
151+ pre- or in-processing, and some some applications may not be useable with such
152+ techniques. Other solvers provide more and better pre- or in-processing than Gini
153+ and help is welcome in adding such solving techniques to Gini.
154+
155+ The core CDCL solver in Gini has been compared with that in MiniSAT and PicoSAT,
156+ two standard such solvers on randomly chosen SAT competition problems. In this
157+ evaluation, Gini out performed PicoSAT and was neck-in-neck with MiniSAT. The
158+ core CDCL solver in Gini also measures up to PicoSAT and MiniSAT in terms of
159+ "propagations per second", indicating the core routines are themselves competitive
160+ with these solvers, not only the heuristics. This level of performance has not to
161+ our knowledge been achieved by other sat solvers in Go, such as go-sat or gophersat.
162+
163+ While the above evaluation casts a fairly wide net over application domains and
164+ problem difficulty, the performance of sat solvers and underlying algorithms are
165+ fundamentally hard to predict in any rigorous way. So your experience may differ,
166+ but we are confident Gini's core solver is a well positioned alternative to standard
167+ high-performance CDCL solvers in C/C++. We encourage you to give it a try and welcome
168+ any comparisons.
169+
170+
137171# Concurrency
138172Gini is written in Go and uses several goroutines by default for garbage
139173collection and system call scheduling. There is a "core" single-goroutine
0 commit comments