Mattias Gaertner wrote:
Examples where I think it could be used (if not already)
- background parsing of units
Yes, this is planned. Some expensive parts can be done in worker
Excellent.
- fpdoc lookups
That should be easier. This already works in several separate parts
executed on idle.
Nice.
available. The only problem is that TAsyncProcess bites the debugger
under Linux. Compile LCL and IDE with -dUseAsyncProcess. Run an
application. Close the IDE. The gui will close, but lazarus is still
running.
I probably run my applications 1% of the times via the IDE. All other uses and
testing is by running them from a command line. I few years ago when debugging
via the IDE really sucked, I wrote various logging methods which I got so used
to and always works. Logging gets done via a separate thread and I can log to
various outputs. cached logging to file, cached logging to GUI or non-cached
logging to console (stdout).
I'll recompile tomorrow with-dUseAsyncProcess and see how it goes.
For example: An expensive function is "Find in files" which could be
multithreaded. But the bottleneck here is the memory system and the
disk, not the cpu.
That is an excellent candidate. We did some testing with a multi-threaded
application that does CRC calculation on files, recursively through
directories. It was one of the multi-threading entries to a Borland
Multi-Threading competition held some years ago. We adapted the program for our
needs and by using 2-4 threads on a multi-core system improved overall
throughput a lot. The app did not work so well when the files were on CD-ROM
though. :-) A major disk bottleneck, but hard drives or raid system is much
faster.
AFAIK Florian did some tests years ago and the bottleneck was the
memory system and the disk.
I believe GCC can use threads for parallel compiling, so there must be some
advantage. With faster hard drives or SSD drives it should make a difference -
I guess. But yes, I understand your point regarding disk IO being slower than
in-memory computations.
Regards,
- Graeme -
________________________________________________
fpGUI - a cross-platform Free Pascal GUI toolkit
http://opensoft.homeip.net/fpgui/
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus