[fpc-devel] x86_64 Optimizer Overhaul

J. Gareth Moreton gareth at moreton-family.com
Sat Dec 15 18:13:02 CET 2018


 I dare ask, does that mean we should avoid workarounds in the compiler
(and our own programs) that aim to avoid constant construction and
destruction of objects, and instead try to improve the memory manager?
 So many discoveries!
 Gareth aka. Kit
 P.S. This thread is supposed to be for the x86_64 optimizer overhaul that
I presented!

 On Sat 15/12/18 18:01 , Martok listbox at martoks-place.de sent:
 Am 15.12.2018 um 17:12 schrieb Florian Klämpfl: 
 > The memory manager itself pools already, so no need for the compiler. If
somebody wants to improve the heap manager: 
 > implement OS supported re-allocations (OS can move memory by just
shuffling pages). 

 Very much agree, it's not a user program's job to work around the standard

 memory manager in daily use. Doing that is a C++-ism that shouldn't exist
in a 
 sane environment ;-) 

 I just tested something, and I'm a surprised by how big the difference is.
This 
 simple test is 1.5 times slower in FPC/trunk/win32 than Delphi 2007 and
2.8 
 times slower for instances of TComponent. Medium-size GetMemory (I tested
123 
 bytes) is 22 times slower in FPC. 
 Looks like there is quite some potential there. 

 const COUNT=10000; 
 var 
 t1, t2: dword; 
 objs: array[0..10000] of TObject; 
 i, j: integer; 
 begin 
 t1:= Gettickcount; 
 for i := 0 to COUNT - 1 do begin 
 for j := 0 to high(objs) do 
 objs[j]:= TObject.Create; 
 for j := 0 to high(objs) do 
 objs[j].Free; 
 end; 
 t2:= Gettickcount; 

 writeln((t2-t1)/COUNT:10:3, 'ms'); 
 Readln; 
 end. 

 -- 
 Regards, 
 Martok 

 _______________________________________________ 
 fpc-devel maillist - fpc-devel at lists.freepascal.org [1] 
 http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
[2]">http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel 

 

Links:
------
[1] mailto:fpc-devel at lists.freepascal.org
[2] http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20181215/9f7ce927/attachment.html>


More information about the fpc-devel mailing list