Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#15

AW: Liegen lokale Klassen auf dem Stack?

  Alt 7. Dez 2017, 17:48
An einem (1) Objekt wird es sicher nicht scheitern (es sei denn es ist gigantisch). Aber was ist mit 100 Objekten? Und gerade bei Rekursion kommst du deutlich schneller an deine Grenzen wenn du statt 20 Bytes (als Beispiel einer Funktion ohne Objekte auf dem Stack und mit ein paar ints/pointern/etc als lokale Variablen) auf einmal 200 Bytes oder sogar mehr pro Aufruf auf den Stack packst. Dann ist 10x schneller Schluss und wo man im Normalfall nur bei versehentlichen Endlos-Rekursionen einen Stackoverflow bekommt, kann das dann vllt. schon in Fällen auftreten wo auf dem Papier keine Endlosrekursion vorlag, aber die Rekursion sehr tief ging und der Stack einfach voll war.
Aber dann ist meiner Meinung auch der Punkt erreicht, wo man über das Design seines Codes nachdenken sollte und die Rekursion z.B. durch einen manuellen Stack ersetzen sollte. Denn man will ja auch nicht, dass einem der Code plötzlich um die Ohren fliegt, nur weil mal die Eingabe 10x so groß ist. Ich achte immer darauf, dass der Hardwarestack höchstens logarithmisch zur Eingabe wächst (O log n), denn so ist er auch gedacht. Solange man das beachtet, hat man eigentlich nie ein Problem. Ich habe das zumindest noch nie erlebt.
  Mit Zitat antworten Zitat