I did some experiments on putting daase into memory instead of disk.
For the 8.5MB interp.daase, load it into memory takes 23MB:
(sb-ext:gc)
(room) ;; Dynamic space usage is: 19,602,224 bytes.
(setq l1 '())
(with-open-file (s "interp.daase")
(do ((item (read s nil 'eof) (read s nil 'eof)))
((eq item 'eof))
(setq l1 (cons item l1))))
(sb-ext:gc)
(room) ;; Dynamic space usage is: 42,911,520 bytes.
The number is reasonable: viewing l1 as a tree, it has 1.4 million
leaves (which are symbol or number), and requires 1.4 million cons
cells, and each takes a machine word -- 64 bits so:
1.4 million x 2 x 8 bytes = 22.4 MB
Of course, if we want all of database in memory, why not put
it directly in the various hash tables? I have not tested how
much memory this would require, should be much less than 23 MB.
Bzip2 compress interp.daase gives 504K, that's also reasonable
considering there's so much duplicated sub-expressions in it.
So I wonder does in memory daase (then dump to disk image) have
advantages over current external text daase?
Or consider a crazier thing: load everything into memory (image)
and distribute FriCAS as a single executable! It actually can
be a good idea for Windows.
A rough test using fricas0 shows that loading the 1383 algebra
fasl files (39MB) into memory takes 26MB RAM, interp/ takes 13MB.
- Qian
--
You received this message because you are subscribed to the Google Groups "FriCAS -
computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/fricas-devel/2e092244-2c7a-4f8c-b16b-d60c78c686fd%40gmail.com.