Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi MemoryLeaks mit s := I.ToString (https://www.delphipraxis.net/182659-memoryleaks-mit-s-%3D-i-tostring.html)

BUG 9. Nov 2014 11:29

AW: MemoryLeaks mit s := I.ToString
 
Ich hab irgendwie den Eindruck, ihr wisst beide worum es geht und was man Grundsätzlich beachten muss, und redet jetzt nur noch ein bisschen aneinander vorbei. Für Leute ohne Erfahrung mit Nebenläufigkeit ist das sicher interessant, aber ansonsten nicht sonderlich produktiv :mrgreen:

Luckie 10. Nov 2014 00:31

AW: MemoryLeaks mit s := I.ToString
 
Hey, lass uns doch auch mal den Coolen raushängen. Und auch das Nebeneinadervorbeireden birgt ja noch zusätzliches Wissen. Den Beitrag über die Vor- und Nachteile und wann was besser geeignet ist, fand ich interessant.

QuickAndDirty 10. Nov 2014 08:28

AW: MemoryLeaks mit s := I.ToString
 
Ich wusste nicht mal das es Fiber gibt.

Ab wievielen "gleichzeitigen" prozessen lohnt sich jetzt Fiber?

Ich meine, dass die neuen Indy componenten ja auch von einem Thread pro connection geäandert wurden, so dass es da jetzt
einen Context pro Connection und mehrere Contexte in einem Thread gibt.

Mehrere Contexte pro Thread ist ein Indy-Context schon ein Fiber?

Also ab wievielen Verbindungen ist ein Fiber pro Verbindung besser als ein Thread?

Kraisel 11. Nov 2014 17:07

AW: MemoryLeaks mit s := I.ToString
 
Schön, dass es doch noch jemand gibt, der sich für dieses Thema interessiert. Aber es ist richtig, dass im Grunde fast alles gesagt ist, und mit dem ursprünglichen Thema nichts mehr zu tun hat. Über Threads, Fiber und Co. könnte man natürlich stundenlang schreiben.

Aber noch soviel zu den Fragen:

Die Indy-Komponenten kenne ich nicht.

Microsoft gibt an, dass maximal 16 Threads pro CPU laufen sollten, und auch nur dann, wenn alle die meiste Zeit auf etwas warten. Die nackte schnellstmögliche Umschaltung von vier Threads dauert auf meinem PC 2.0..5.0 us je Umschaltung. Wichtig ist auch noch zu wissen, dass ein Thread 5..20ms braucht, um zu starten. Wenn der Thread also nicht schon da ist und läuft, und man glaubt, mal eben einen anonymen Thread parallel laufen zu lassen, wird bitter enttäuscht werden. Alles wird deutlich langsamer als ohne Thread.

Der Fiber ist in Delphi leider ein Windows-Konstrukt und m.E. nicht für Mac oder NewGeneration-Compiler verfügbar. Wie lange er also noch gepflegt wird, weiß leider niemand. Also auch hier Vorsicht bei der Benutzung für neue Anlagen. Aber wenn man ihn benutzt, wird man mit atemberaubender Geschwindigkeit von meist über 100 mal schneller belohnt. Die Nachteile hatte ich ja bereits beschrieben.

taveuni 12. Nov 2014 07:23

AW: MemoryLeaks mit s := I.ToString
 
Zitat:

Zitat von Kraisel (Beitrag 1279399)
Microsoft gibt an, dass maximal 16 Threads pro CPU laufen sollten, und auch nur dann, wenn alle die meiste Zeit auf etwas warten.

Wo? Diese absolute Aussage steht so irgendwo? Kannst Du mir den Link posten?

Stevie 12. Nov 2014 07:47

AW: MemoryLeaks mit s := I.ToString
 
Also bei meiner Fiber Implementierung hab ich mit dem oben abgebildeten Code kein Memleak. Das liegt aber auch daran, dass ich sie korrekt beenden lasse.
Wenn ich vor dem Ende der Test Procedure nen Yield einbaue und nie wieder in den Fiber springe, dann natürlich auch.

Der schöne Günther 12. Nov 2014 12:57

AW: MemoryLeaks mit s := I.ToString
 
Zitat:

Zitat von taveuni (Beitrag 1279424)
Wo? Diese absolute Aussage steht so irgendwo? Kannst Du mir den Link posten?

Vielleicht meint er die Embarcadero-Doku zu TThread. Da steht, dass 16 aktive Threads eine "praktikable Obergrenze" darstellen.

Siehe auch hier:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz