The SICStus Prolog User's Manual states about its Generic Limitations:
The number of atoms created may not exceed 1048575 (33554431) on 32-bit (64-bit) architectures.
So when I ran the following query on my x64-box using SICStus Prolog 4.8.0 ...
?- statistics(runtime,_), ( between(1,100000000,N), number_chars(N,Xs), atom_chars(A,[a|Xs]), false ; true ), statistics(runtime,[_,RT]).
... I was quite surprised to get an answer:
RT = 44313 ?
What's going on? Does the atom limit not apply here?
This is what I get with 4.9.0 and running statistics
which gives you the whole picture:
...
19.129 sec. for 10000 atom garbage collections which collected 99994193 atoms (4188645735 bytes)
...