FastMM4 AVX, FastMM5

vložil Radek Červinka 13. srpna 2020 16:21

Už je to nějakou dobu, co jsem psal o FastMM4 naposledy a mezitím se něco změnilo. Vývoj FastMM4 byl nahrazen za FastMM5 s možnou komerční licencí a objevil se fork FastMM4-AVX. Fork mají na svědomí autoři známého emailového klienta Bat!, což není špatná vizitka.

Následující text berte jako informativní a případně testy podle pravidla co si sám nezkusím, tomu nevěřím.

FastMM5

FastMM5 je kompletní přepis původního FastMM4 s důrazem na odstranění slabších věcí v předchozí verzi, hlavně u multithread aplikací.

Kompilátory: Delphi XE3 a pozdější

Platformy: Windows, 32-bit and 64-bit

Licence: duální GPL3 nebo komerční

FastMM4-AVX

FastMM4-AVX je evoluce původního FastMM4 4.992 o určité optimalizace, primárně za použití AVX resp. Enhanced REP MOVSB/STOSB a lepším zamykáním v případě multithread aplikací a další mikrooptimalizace.

Kompilátory: Delphi 5 a pozdější, FPC

Platformy: Windows, 32-bit and 64-bit

Licence: stejná jako FastMM4

Pozn.: AVX se v 32bit modu nepoužívá

Pro zajímavost jsem si udělal nějaké orientační testy, za použití FastCodeBenchmark a výsledek mne překvapil. Upozorňuji, že se jednalo o 32 bit testy, v 64bit. nebo na jiném procesoru (u mne to byl můj Ryzen 5 4500U) by to mohlo být jiné, ale výsledek FastMM5 je velmi zajímavý.

Vybral jsem si namátkou jeden single thread, a několik multithread testů. Nedělal jsem kompletní testy celého benchmarku, takže to je určitě zkreslené.

Výchozí FastMM4 z instalace Delphi 10.3.3

ReallocMem Small (1-555b) benchmark            MTicks = 140944    Mem =   38484
Raw Performance 2 threads                      MTicks =  46837    Mem =   59676
Raw Performance 4 threads                      MTicks =  51918    Mem =   79644
Raw Performance 8 threads                      MTicks =  57118    Mem =  117020

FastMM4.992 z github

ReallocMem Small (1-555b) benchmark            MTicks = 155942    Mem =   38484
Raw Performance 2 threads                      MTicks =  55028    Mem =   57116
Raw Performance 4 threads                      MTicks =  61361    Mem =   77084
Raw Performance 8 threads                      MTicks =  64236    Mem =  115740

FastMM4 AVX

ReallocMem Small (1-555b) benchmark            MTicks = 152556    Mem =   38484
Raw Performance 2 threads                      MTicks =  41105    Mem =   60956
Raw Performance 4 threads                      MTicks =  43867    Mem =   82204
Raw Performance 8 threads                      MTicks =  42295    Mem =  118300

FastMM5

ReallocMem Small (1-555b) benchmark            MTicks = 161151    Mem =   37204
Raw Performance 2 threads                      MTicks =  10755    Mem =   68692  !!!!!!!!
Raw Performance 4 threads                      MTicks =  13671    Mem =  101972  !!!!!!!!
Raw Performance 8 threads                      MTicks =  13004    Mem =  164892  !!!!!!!!

A na závěr pro porovnání, bez memory manageru, tak, že se všechna alokace nechává na Windows 10, via. prehistorický memorymanager ze Synapse.

Bez MM

ReallocMem Small (1-555b) benchmark            MTicks = 264868    Mem =   34644
Raw Performance 2 threads                      MTicks =  57284    Mem =   69272
Raw Performance 4 threads                      MTicks = 111537    Mem =  104740
Raw Performance 8 threads                      MTicks = 178017    Mem =  143844

Zavěr: cílem bylo upozornit na nové dvě možnosti v oblasti MM v Delphi. Výchozí manažer z instalace Delphi je slušný, pokud nemáte peníze nebo nemáte podporovanou verzi použijte FastMM4 AVX, a FastMM5 mi ve vícevláknech úplně vyrazil dech svou rychlostí.

Tagy:

Komponenty | Praxe

Komentáře

18.8.2020 13:39:37 #

František

Radek: by ma zaujímalo aj technické pozadie, ako sa im to podarilo zefektívniť

František

20.8.2020 12:50:18 #

radekc

třeba: https://en.delphipraxis.net/topic/2751-fastmm5-now-released-by-pierre-le-riche-small-background-story/

radekc

21.8.2020 1:11:50 #

bullhead

"Marco had not seen at that moment a big chance that the Delphi Development Team could improve the situation." - možná něco nechápu, ale řekl bych, že takto basic věc by právě měl dělat interní team:-(

bullhead

Komentování ukončeno

Naše nabídka

MVP
Ing. Radek Červinka - Embarcadero MVP
profil na linkedin, Twitter:@delphicz

Nabízím placené poradenství a konzultace v oblasti programování a vývoje SW.
Dále nabízíme i vývoj speciálního software na zakázku.

Neváhejte nás kontaktovat (i ohledně reklamy).

love Delphi

O Delphi.cz

Delphi je moderní RAD nástroj podporující tvorbu nativních aplikací pro platformu Win32, Win64, Mac OSX, Linux a na iPhone a Android.

Delphi.cz je nezávislý portál pro uživatele Delphi. Portál není koncipován pro úplné začátečníky, i když i ti se zde nebudou nudit, ale spíše na programátory, kteří již něco znají a chtějí své znalosti dále rozvíjet a sledovat novinky.

Poslední komentáře

Comment RSS

Dle měsíců