Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Extrem langsames Compilieren (Delphi 5)
Mathematiker - So 12.05.13 22:23
Titel: Extrem langsames Compilieren (Delphi 5)
Hallo,
nachdem ich nun fast 50 Billionen Zahlen auf einsame Primzahlen (
http://www.entwickler-ecke.de/viewtopic.php?t=111471) getestet habe, wollte ich die Feldgrenzen erweitern, um evtl. bis zu 100 Billionen zu kommen.
Dabei tritt etwas Merkwürdiges auf, was ich nicht verstehe.
Ich habe zwei Varianten. Erste Variante, die Felder liegen in der Form-Klasse:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| const panz=500000; type TForm1 = class(TForm) ... private primz,rest :array[1..panz] of integer; ... public end; |
und zweite Variante, die Felder sind global definiert.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| const panz=500000; type TForm1 = class(TForm) ... end; var primz,rest :array[1..panz] of integer; |
Solange die Primzahl-Anzahl bei 500000 ist, gibt es keine Probleme. Erhöhe ich auf 600000 oder mehr, übersetzt Delphi 5 die Variante 1 wie immer.
In der Variante 2 benötigt der Compiler bei weniger als 400 Zeilen Quelltext (ohne irgendeine Fehlermeldung und ohne die Möglichkeit die Compilierung abzubrechen) zum Erzeugen des Programms auf einmal mehr als 1 Minute. Beim ersten Compilieren wollte ich schon per Taskmanager Delphi beenden, da Delphi keinerlei Reaktion zeigte. Kurz vorm Klick auf "Programmabschießen" erschien auf einmal die Exe.
Dass die Felder möglichst nicht global zu definieren sind, ist mir schon klar.
Aber was kann die Ursache für solch ein komisches Verhalten sein?
Beste Grüße
Mathematiker
jaenicke - So 12.05.13 22:39
Da ist zu 99,9% dein Antivirenprogramm schuld. AVG führt z.B. regelmäßig zu solchen Effekten.
Mathematiker - So 12.05.13 22:44
jaenicke hat folgendes geschrieben : |
Da ist zu 99,9% dein Antivirenprogramm schuld. |
Danke für die schnelle Antwort.
Solche Effekte kannte ich bisher noch nicht, aber man lernt immer wieder dazu.
Richtig verstehen kann ich allerdings immer noch nicht, weshalb das Antivirenprogramm mein Programm mit globalen Feldern als "Problem" ansieht.
Denn die verzögerte Compilierung bei Variante 2 tritt immer auf, sobald ich die Feldgrenze von 500000 überschreite.
Beste Grüße
Mathematiker
Tranx - Mo 13.05.13 04:31
Ich kann Jaenicke nur zustimmen. Habe mal Deine Variationen durchgespielt. Bei mir (Delphi 5, Windows 7, Microsoft Essentials) dauert das Compiulieren des leeren Formulars mit den beiden Arrays in beiden Fällen nur max. 1 Sekunde selbst bei pAnz = 800000.
Da frage ich mich doch manchmal ernsthaft, was Antivirenprogramme so alles treiben? Was bitte hat ein Index von 600000 statt 500000 in einem Programm mit einem Virus, Trojaner, .... zu tun? Haben so manche Programme mangels ernsthafter Bedrohung nichts anderes zu tun, als dem User das Leben schwer zu machen? Das erinnert mich an Söldner nach dem 30-jährigen Krieg. Die hatten nichts anderes zu tun, als plündernd, mordend und vagabundierend durch die Lande zu ziehen. Allerdings hatten sie das im Krieg ja auch schon getan. Das nur nebenbei.
jaenicke - Mo 13.05.13 06:39
Das ist reiner Zufall. Denn nach der Änderung hat das Programm leicht anderen Code, und wenn der dann einem Virus ähnelt, wird genauer analysiert. Das nur als Beispiel. Jedenfalls hatte ich das schon öfter bevor ich zu Norton umgestiegen bin, und im Büro mit AVG habe ich das öfter mal.
Mathematiker - Mo 13.05.13 09:10
Hallo,
ich habe jetzt einmal den Echtzeitschutz von MSE deaktiviert und es noch einmal probiert.
Und siehe da: Nun compiliert Delphi 5 beide Varianten gleich schnell, ohne Probleme.
Deshalb schlage ich vor, dass Microsoft im Startfenster von MSE den Text auf
Zitat: |
Security Essentials überprüft Ihren Computer auf schädliche Software und trägt so zu dessen Schutz und mitunter extrem langsamer Arbeitsweise bei. |
ändert. :wink:
Beste Grüße und vielen Dank für die Hinweise
Mathematiker
Tranx - Mo 13.05.13 17:14
Steffen,
das verstehe ich nicht. Ich habe ebenfalls MSE mit Echtzeitschutz auf dem Rechner. Und bei mir läuft alles korrekt, ohne Verzögerung.
jaenicke - Mo 13.05.13 17:24
Das Verhalten ist eben gerade bei Antivirensoftware nicht immer gleich, das kommt auch auf die Situation, den exakten Code, die Delphiversion, ... an. ;-)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!