There are a number of reasons why you better choose a commercial 
Prolog system, or another academic product:
- SWI-Prolog is not supported
 Although I usually fix bugs shortly after a bug report arrives, I cannot 
promise anything. Now that the sources are provided, you can always dig 
into them yourself.
- Memory requirements and performance are your first concerns
 A number of commercial compilers are more keen on memory and performance 
than SWI-Prolog. I do not wish to sacrifice some of the nice features of 
the system, nor its portability to compete on raw performance.
- You need features not offered by SWI-Prolog
 In this case you may wish to give me suggestions for extensions. If you 
have great plans, please contact me (you might have to implement them 
yourself however).
On the other hand, SWI-Prolog offers some nice facilities:
- Nice environment
 This includes `Do What I Mean', automatic completion of atom names, 
history mechanism and a tracer that operates on single key-strokes. 
Interfaces to some standard editors are provided (and can be extended), 
as well as a facility to maintain programs (see make/0).
- Very fast compiler
 Even very large applications can be loaded in seconds on most machines. 
If this is not enough, there is a Quick Load Format that is slightly 
more compact and loading is almost always I/O bound.
- Transparent compiled code
 SWI-Prolog compiled code can be treated just as interpreted code: you 
can list it, trace it, etc. This implies you do not have to decide 
beforehand whether a module should be loaded for debugging or not. Also, 
performance is much better than the performance of most interpreters.
- Profiling
 SWI-Prolog offers tools for performance analysis, which can be very 
useful to optimise programs. Unless you are very familiar with Prolog 
and Prolog performance considerations this might be more helpful than a 
better compiler without these facilities.
- Flexibility
 SWI-Prolog can easily be integrated with C, supporting non-determinism 
in Prolog calling C as well as C calling Prolog (see section 
9). It can also be embedded embedded in external programs 
(see
section 9.5). System predicates can 
be redefined locally to provide compatibility with other Prolog systems.
- Integration with XPCE
 SWI-Prolog 
offers a tight integration to the Object Oriented Package for User 
Interface Development, called XPCE Anjewierden & 
Wielemaker, 1989. XPCE allows you to implement graphical user 
interfaces that are source-code compatible over Unix/X11, Win32 (Windows 
95/98/ME and NT/2000/XP) and MacOS X (darwin).