Forum: Win32/Win64 API (native code)
Delphi
by Gruber_Hans_12345,
21. Jul 2022
ich verwende im moment den hier https://github.com/synopse/mORMot/blob/master/SynScaleMM.pas
mich würds halt interessieren ob hier wer den in Verwendung hat.
Forum: Win32/Win64 API (native code)
Delphi
by Gruber_Hans_12345,
21. Jul 2022
Ok liegt auf jeden Fall mal eindeutig am MM.
Hab hier mal meine Vergleichswerte
Delphi MM
1 : 9125 ms = 9125 ms
4 : 31484 ms = 7871 ms
10: 69656 ms = 6965 ms
Fast MM4
1 : 10562 ms = 10562 ms
Forum: Win32/Win64 API (native code)
Delphi
by Gruber_Hans_12345,
20. Jul 2022
so habe die variant kopier sachen mal so umgebaut (in var value : variant statt übergabe per result usw)
aufjeden fall kommt er jetzt nicht mehr in den CirticalSection von den variants.pas rein.
Allerdings komme ich immer noch nur auf 50% bei 5 threads.
Werde dann morgen einen anderne MM ausprobieren - allerdings dachte ich mir das der halt nur langsamer ist, und nicht blockiert - also...
Forum: Win32/Win64 API (native code)
Delphi
by Gruber_Hans_12345,
20. Jul 2022
Ja ist noch D2007 mit dem neusten FastMM 4 mittlerweile.
aber ich habe schon was gefunden was es vermutlich ist/sein kann.
ich verwende sehr viele variants, und davon auch sehr viele Customvariants
und bei jedem VarCopyDeep und VarClearDeep wird da dann FindCustomVariantType aufgerufen wo ein
EnterCriticalSection(LVarTypeSync);
und ich vermute das wird wirklich extremst oft...
Forum: Win32/Win64 API (native code)
Delphi
by Gruber_Hans_12345,
20. Jul 2022
Hallo ich bräuchte einen Suchansatz, wie ich finde, warum mein Programmcode (der sehr sehr riesig ist) nicht vernünftig skaliert wenn ich den in mehreren Threads starte.
1 Thread CPU 26% (bei 4 Kernen)
2 Threads CPU 39%
3 Threads CPU 45%
4 Threads CPU 49%
10 Threads CPU 57%
In meinem Code sind keine Synchronize drinnen (nur das OnTerminate wird verwendet um dann den Zähler...