Autor |
Beitrag |
Mathematiker
      
Beiträge: 2622
Erhaltene Danke: 1448
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: So 12.05.13 22:23
Hallo,
nachdem ich nun fast 50 Billionen Zahlen auf einsame Primzahlen ( www.entwickler-ecke....ewtopic.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
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
Zuletzt bearbeitet von Mathematiker am So 12.05.13 23:32, insgesamt 1-mal bearbeitet
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: So 12.05.13 22:39
Da ist zu 99,9% dein Antivirenprogramm schuld. AVG führt z.B. regelmäßig zu solchen Effekten.
Für diesen Beitrag haben gedankt: Mathematiker
|
|
Mathematiker 
      
Beiträge: 2622
Erhaltene Danke: 1448
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: 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
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: 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.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
Für diesen Beitrag haben gedankt: Mathematiker
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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.
Für diesen Beitrag haben gedankt: Mathematiker
|
|
Mathematiker 
      
Beiträge: 2622
Erhaltene Danke: 1448
Win 7, 8.1, 10
Delphi 5, 7, 10.1
|
Verfasst: 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.
Beste Grüße und vielen Dank für die Hinweise
Mathematiker
_________________ Töten im Krieg ist nach meiner Auffassung um nichts besser als gewöhnlicher Mord. Albert Einstein
|
|
Tranx
      
Beiträge: 648
Erhaltene Danke: 85
WIN 2000, WIN XP
D5 Prof
|
Verfasst: 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.
_________________ Toleranz ist eine Grundvoraussetzung für das Leben.
|
|
jaenicke
      
Beiträge: 19314
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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. 
|
|
|