Autor |
Beitrag |
galagher
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: So 18.11.12 21:19
Hallo!
Nachdem ich mit Delphi XE2 ein paar Mal kompiliert habe, wird der Computer langsam. Das bleibt auch so, wenn Delphi bereits beendet ist.
Das geht so weit, dass, wenn ich Delphi-Programme mit Debugger starte (F9), mehr als eine Minute vergehen kann! Aber auch das Ausführen von Programmen ohne Debugger, ja schon das Komplilieren, bremst.
Wenn ich den Taskmanager starte, wird mein Programm als Prozess angezeigt, es ist aber nicht immer am Bildschirm zu sehen, vielleicht müsste ich da aber einfach nur noch länger warten! Wenn ich es dann per Taskmanager beende, reagiert Delphi so, als ob es normal beendet worden wäre.
Auch das Herunterfahren des PC's dauert dann minutenlang; Dateizugriffe, Programme starten usw., es klappt eigentlich alles, nur sehr verlangsamt.
Nach einem Neustart ist alles wieder normal.
Habe dazu folgende Überlegungen:
- Zu wenig RAM (2 GB)
- Grösse der Auslagerungsdatei ändern (gibt ja Tools dafür)
- Kaspersky bremst
- "Etwas" von Delphi bleibt im RAM zurück
- Es liegt am aktuellen Projekt, da ist es ganz extrem
Kann ich da etwas in Delphi einstellen, um die Situation zu verbessern?
Was kann das Problem eurer Meinung nach sein?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 19.11.12 13:09
Mögliche Ursachen:
Das Projekt gibt Handles nicht frei, im System bleiben die dann unter Umständen auch nach Programmende da. Mit zu vielen GDI-Handles habe ich Windows XP schon zum Absturz (eingefrorener Bildschirm) gebracht. Ab Vista habe ich das eigentlich nicht mehr so schnell hinbekommen, aber gehen tut es prinzipiell vermutlich auch da noch.
Kaspersky:
Damit hatte ich schon viel Spaß, für mich persönlich ist das Programm ein No-Go. Dem traue ich alles zu.
Mit dem RAM sollte es an sich keine Probleme geben, ich hatte sogar Vista 32-Bit auch mit 1 GiB RAM und ich glaube XE.
Die Größe der Auslagerungsdatei ändern? Wieso Tools, das kannst du doch in Windows selbst.  Benutzt du etwa irgendwelche "Tuning-Tools"? Dann brauchst du dich über gar nix wundern... die machen das System meistens eher kaputt.
Ob die aktuelle Größe der Auslagerungsdatei reicht, kannst du ja im Taskmanager schauen. Es macht Sinn die Festplatte zu Defragmentieren und dann die Minimalgröße der Auslagerungsdatei auf die normal benutzte Größe zu setzen, damit diese nicht fragmentiert.
Per Taskmanager beenden kann aber von sich aus schon dazu führen, das Systemressourcen nicht freigegeben werden. Das kann daher an sich schon ein Problem sein.
Schau am besten mal auf die Systemressourcen (Handles usw.) im Taskmanager. Zudem kannst du den Ressourcenmonitor nutzen um zu schauen was im System so läuft. (Obwohl man das wirklich gut erst bei Windows 8 sieht.)
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Mo 19.11.12 14:21
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 19.11.12 14:57
Aber leider nur einen Teil davon, im System reservierter Speicher, ... wird dadurch nicht erfasst.
FastMM kann das zwar auch nicht, macht aber bessere Berichte, deshalb würde ich dann gleich zu der großen Version raten statt zu der kleinen eingebauten via ReportMemoryLeaksOnShutdown.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mo 19.11.12 17:00
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 23.11.12 17:13
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Fr 23.11.12 17:21
jaenicke hat folgendes geschrieben : | Dann sei froh, dass überhaupt noch etwas funktioniert. Da brauchst du dich über Probleme nicht wundern.  |
Nun, man kann das ja abschalten und den Dienst nur bei Bedarf starten lassen, um zB. die Registry zu säubern. Mal sehen, wenn's weiter Probleme macht, deinstalliere ich es wieder.
jaenicke hat folgendes geschrieben : | Wenn Speicherlecks erkannt werden, werden die beim Beenden des Programms dann angezeigt. |
Ok, da keine Meldung kommt, gibt's also auch keine Speicherlecks. Das scheidet schon mal aus.
Habe jetzt auch defragmentiert, läuft alles schneller. Mal sehen, ob der PC auch beim Kompilieren anderer Delphi-Projekte lahmt, und ob's überhaupt an Delphi liegt.
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 23.11.12 17:31
galagher hat folgendes geschrieben : | jaenicke hat folgendes geschrieben : | Dann sei froh, dass überhaupt noch etwas funktioniert. Da brauchst du dich über Probleme nicht wundern.  | Nun, man kann das ja abschalten und den Dienst nur bei Bedarf starten lassen, um zB. die Registry zu säubern. |
Genau diese Säuberungsaktionen machen ja erst oft das System kaputt. Ich hatte immer wieder massiv Probleme mit solchen Tools, die jemand bei sich benutzt hatte, und die irgendwelche Registryeinträge einfach mal löschen, Systemdienste ausschalten, ... Ja, die meisten User brauchen die auch nicht, aber das gilt eben leider nicht für alle. Die Ursache zu finden, ist dann aber meistens nicht so einfach.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Fr 23.11.12 17:56
jaenicke hat folgendes geschrieben : | Genau diese Säuberungsaktionen machen ja erst oft das System kaputt. Ich hatte immer wieder massiv Probleme mit solchen Tools, die jemand bei sich benutzt hatte, und die irgendwelche Registryeinträge einfach mal löschen, Systemdienste ausschalten, ... Ja, die meisten User brauchen die auch nicht, aber das gilt eben leider nicht für alle. Die Ursache zu finden, ist dann aber meistens nicht so einfach. |
Muss man halt alles und genau lesen, was das jeweilige Tools so anzeigt und zum Löschen, Entfernen oder Reparieren vorschlägt und beim geringsten Zweifel die Aktion nicht ausführen lassen! Also beim Registry-Säubern hatte ich noch nie Probleme, und ich bentutz(t)e seit Jahren Sweepy, CCleaner, TuneUp, jv16Power Tools, Fix-It Utilities usw. Auch RegClean von unserem Billy! Ergebnis: Das System läuft schneller. Einzige Ausnahme, und das ist bloss ein Verdacht, ist die TuneUp-Live-Optimierung.
Ich habe mir damit noch nie das System zerschossen oder so. Ich mag es nur einfach nicht, dass Windows jeden Schrott ansammelt. Vieles, auch unnützes Zeug wird in der Registry belassen: Verweise auf längst gelöschte Dateien, ungültige Dateinamenerweiterungen, fehlende Verzeichnisse usw. (Erzeug' mal eine Datei mit irgendeiner Dateinamenerweiterung - schwupps, Windows legt das in der Registry ab). Keiner braucht so etwas! Aber Windows macht es einfach. Und wenn's keinen Sinn mehr hat, weil es kein Programm auf dem PC gibt, das solche Dateinamenerweiterung verwendet, ist es eben Müll.
ZB.: Kein Programm nutzt .pas.~xx Dateien (Delphi-Backupdatei), aber auch sowas hatte ich schon mal in der Registry. Wozu? 
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Sa 24.11.12 23:43
Hallo!
Ich bin völlig ratlos! Mein Programm legt nach jedem Mal ausführen den ganzen PC lahm und macht ihn träge und langsam, und zwar in so extremer Form, dass andere Programme teilweise erst nach Minuten starten! Das bleibt auch so, nachdem ich mein Programm beendet habe.
Teils funktioniert alles ja fast normal, wenn ich zB. mit der Maus über die Buttons der Taskleiste gehe, erscheinen die Hints prompt, und wenn ein Programm erstmal läuft, läuft es auch so schnell wie immer. Die Menüs aber klappen erst mit Verzögerung auf und Festplattenzugriffe dauern extrem lang. Herunterfahrten des PC's dauert mehrere Minuten!
Erst dachte ich, das liegt an Delphi, an Kaspersky oder anderen Programmen, aber es liegt an meinem Programm selbst!
Was mein Programm macht:
- Es liest RTF-Code ein und stellt ihn als formatierten Text dar, den ich in einer TStringlist als einzelne Zeilen halte.
- Der RTF-Code macht die Datendateien recht gross.
- Ich verwende mehrere Jedi-Komponenten.
Speicherlecks kann ich ausschliessen.
Kann das am RTF-Code liegen? Den lese ich so ein:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure TForm1.SetRichText(sRTF: String; const RichEdit: TJvRichEdit); var StrS : TStringStream; begin StrS := TStringStream.Create(''); try sRTF := StrReplace(sRTF, sCRLF, sLineBreak, [rfReplaceAll]);
StrS.WriteString(sRTF); StrS.Position := 0;
RichEdit.Lines.LoadFromStream(StrS); finally StrS.Free; end; end; |
Ich benutze JvEdit, JvRichEdit und noch ein paar andere visuelle Komponenten. Kann es an diesen Jedi-Komponenten liegen? Hat jemand eine Idee oder hatte selbst schon so ein Problem? 
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 25.11.12 17:30
Du erstellst einen Stream, schreibst da deinen Text rein und lädst dann aus dem Stream?
Warum packst du den String nicht einfach direkt in dein RichEdit?  Delphi-Quelltext 1: 2: 3: 4: 5:
| procedure TForm1.SetRichText(const sRTF: String; const RichEdit: TJvRichEdit); begin RichEdit.PlainText := False; RichEdit.Text := StrReplace(sRTF, sCRLF, sLineBreak, [rfReplaceAll]); end; |
Nebenbei:
Den Parameter statt einer weiteren Variablen zu missbrauchen um den veränderten Text zu speichern, macht das erstens eher langsamer und ist zweitens schlechter Stil (weil es unübersichtlicher ist).
// EDIT:
Wenn du viel mit großen Strings im RichEdit arbeitest, liegt das Problem vielleicht daran, aber normalerweise gibt es da kein Problem. Wie wäre es, wenn du dein Programm schrittweise kleiner machst bis das Problem nicht mehr auftritt? Dann kannst du entweder den Fehler dabei finden oder du hast ein kleines Demoprojekt zum Anhängen. 
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: So 25.11.12 22:44
jaenicke hat folgendes geschrieben : | Du erstellst einen Stream, schreibst da deinen Text rein und lädst dann aus dem Stream?  |
Ja! Das hab' ich von hier: www.entwickler-ecke....t=string&view=df
jaenicke hat folgendes geschrieben : | Warum packst du den String nicht einfach direkt in dein RichEdit? :gruebel |
Weil mit RichEdit.Text := der RTF-Code statt Text dargestellt wird. Da nützt es auch nichts, PlainText auf False zu setzen.
jaenicke hat folgendes geschrieben : | Nebenbei:
Den Parameter statt einer weiteren Variablen zu missbrauchen um den veränderten Text zu speichern, macht das erstens eher langsamer und ist zweitens schlechter Stil (weil es unübersichtlicher ist). |
Meinst du, besser so?
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure TForm1.SetRichText(sRTF: String; const RichEdit: TRichEdit); var StrS : TStringStream; sDestRTF: String; begin StrS := TStringStream.Create(''); try sDestRTF := StrReplace(sRTF, sCRLF, sLineBreak, [rfReplaceAll]);
StrS.WriteString(sDestRTF); StrS.Position := 0;
RichEdit.Lines.LoadFromStream(StrS); finally StrS.Free; end; end; |
jaenicke hat folgendes geschrieben : |
// EDIT:
Wenn du viel mit großen Strings im RichEdit arbeitest, liegt das Problem vielleicht daran, aber normalerweise gibt es da kein Problem. |
Die Strings sind ebenfalls nicht das Problem! Ich habe jetzt alle TJvEdit-Komponenten durch normale TEdit's ersetzt und das JvRichEdit gegen ein normales RichEdit. Jetzt läuft der PC besser, aber noch nicht wie er soll. ZB. geht, während ich diesen Text tippe, das Popup-Menu verzögert auf, auch die Main-Menüs von Firefox klappen verzögert auf. Delphi kompiliert jetzt aber normal und auch mein Programm staret normal.
Wiederum Datei-öffnen- und -speichern Dialoge, auch solche anderer Programme, arbeiten nur mit Verzögerung, und Laufwerkswechsel innerhalb dieser Dialoge gehen ebenfalls langsam.
Wenn ich zB. hier diesen Text per Tastatur markieren und kopieren will, geht das Markieren zwar normal, die Tastenkombination Strg+C funktioniert nur mit Verzögerung! Der Vorschau-Button wieder arbeitet ganz normal!
So etwas hatte ich noch nie und habe auch keine Erklärung dafür, ausser: Die Jedi-Komponenten! Einige Jedi-Komponenten sind noch im Projekt, die brauche ich aber.
Können Komponenten wirklich sowas verursachen? Moderiert von Narses: Beiträge zusammengefasstLange Rede, kurzer Sinn: Internetanschluss ausgesteckt, Kaspersky beendet: So schnell war der PC noch nie, alles lief plötzlich wieder! Kaspersky also ist die Bremse!
Hatte alle Einstellungen auf "maximal" gestellt, einige sind jetzt auf optimal" gesetzt und ich hoffe, das nützt etwas. Wie und ob das aber mit Delphi-Programmen, die Jedi-Komponenten verwenden, zusammenhängt, weiss ich nicht. 
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Mo 26.11.12 00:20
galagher hat folgendes geschrieben : | Lange Rede, kurzer Sinn: Internetanschluss ausgesteckt, Kaspersky beendet: So schnell war der PC noch nie, alles lief plötzlich wieder! Kaspersky also ist die Bremse! |
Ich kann von Kaspersky auch nur abraten, wie schon geschrieben.
Wirklich absolut zufrieden bin ich, gerade was die Performance angeht, im Moment nur mit Norton Internet Security. Das scannt im Hintergrund immer, wenn du gerade am PC nichts machst. Andere scannen einfach durch und stören so die Performance, wenn ich arbeiten will. Und auch sonst ist es gefühlt um Längen schneller als Kaspersky oder Antivir.
|
|
Blup
      
Beiträge: 174
Erhaltene Danke: 43
|
Verfasst: Mo 26.11.12 14:16
Von Norton kann ich nur abraten. Zumindest sollte man ganz genau konfigurieren, insbesondere was nicht gescannt werden soll.
Ich hatte bei einem Kunden den Fall, daß ein Datenbankupdate 10 Stunden lief, welches auf einer schwächeren Maschine mit den selben Daten (DB-Dateien) in 20min abgeschlossen war. Wahrscheinliche Ursache, für jede abgeschlossene Transaktion wurde vom Scanner einen Thread gestartet, der die geänderten Daten analysiert. Zum Schluss liefen hunderte von Threads. Mit Kaspersky hatte ich auch schon schlechte Erfahrungen, Antivir lief eigentlich immer problemlos.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mo 26.11.12 18:58
jaenicke hat folgendes geschrieben : | Wirklich absolut zufrieden bin ich, gerade was die Performance angeht, im Moment nur mit Norton Internet Security. Das scannt im Hintergrund immer, wenn du gerade am PC nichts machst. |
Im Hintergrund (Leerlauf) scannen macht Kaspersky auch, kann man an- und abschalten.
Momentan läuft's ja alles flüssig, fragt sich nur: Wie lange noch!
Blup hat folgendes geschrieben : | Mit Kaspersky hatte ich auch schon schlechte Erfahrungen, Antivir lief eigentlich immer problemlos. |
Ich hatte bisher nie Probleme mit Kaspersky, und ich hatte immer alles aktiviert, was Kaspersky so bietet.
Die Heurisktik-Analyse (Einstellungen/Aktivitätsmonitor und dort dann "Aktualisierbare Vorlage für gefährliches Verhalten verwenden (BSS)" und in "Programmkontrolle" die Einstellung "Regeln für Programme aus Kaspersky Security Network (KSN) laden" scheinen den PC nach einiger Zeit lahm zu legen. Das hat sicher auch gar nichts mit Delphi direkt zu tun.
Einzelne Prozesse/Programme laufen normal, aber jedesmal, wenn's was zum Analysieren gibt, und da erklärt sich mir auch das träge Verhalten von Öffnen- und Speichern-Dialogen, lahmt der PC extrem.
AntiVir hatte ich vor Jahren, war auch zufrieden, wollte dann aber auf eine Pro-Version umsteigen, und es wurde mir da Kaspersky empfohlen. Norton hatte ich nie.
Aber jetzt ist dieser Thread eigentlich schon Off Topic!
//Edit: Hier geht's weiter: www.entwickler-ecke.....php?p=670206#670206
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
|