Running fpcup on Linux x86, Linux x64 with FPC fixes_2_6
Building LCL chm docs with build_lcl_docs, which calls fpdoc: On x86, seems to works ok.
On x64, takes a long time. fpdoc takes a huge amount of CPU (perhaps memory as well, haven't looked).
I suspect the reason the doc generation is slow is because of fpdoc.
Had a quick look at fpc trunk on Linux x64, problem seems to persist but it might be a lot better.... still, if possible, I'd like to offer users the possibility to run fixes 2.6...
The wiki
http://wiki.lazarus.freepascal.org/chm_backend_for_fpdoc does warn you about this:
"Warning: this script enabled all fpdoc bells and whistles, and before 28feb took 40mins to complete on a core2-6600. After the cleanup still 4minutes and 400MB memory. If you want to do this in a nightly build, make sure you have a fpdoc from trunk, preferably from a checkout that was compiled with optimization on. That knocks off another half minute. ( 12.5%)"
Questions:
1) Is it expected that the x64 version is much slower?
2) Is there anything else I can do to speed up LCL doc generation?
3) Optimize for speed probably is best, so recompile fpdoc with something like
cd ~/fpc
make fpdoc OPT="-O3"
fpc fpdoc.pp
Some optimistic (i.e. don't know what I'm doing exactly) browsing in FPC User's Guide gave:
-OaPARAM=VALUE
-OoREGVAR,OoSTACKFRAME,OoLOOPUNROLL,OoTAILREC
-Chxxx Reserves xxx bytes heap. xxx should be between 1024 and 67107840. -CPX=N Set the packing for X to N. X can be PACKSET, PACKENUM or PACKRECORD, and N can be a value of 1,2,4,8 or one of the keywords DEFAULT or NORMAL.
-Csxxx Set stack size to xxx.
-CX Create a smartlinked unit when writing a unit. -Xs strip
Are these useful (and at what values if so ;) ?
What about whole-program optimization?
Thanks,
Reinier
