Achtung: Dies ist eine historische Web-Site. Aktuell ist https://rainer.gerhards.net/ (engl) bzw https://www.rainer-gerhards.de/ (deutsch). Alle dynamischen Funktionen, Formulare etc auf dieser Seite sind abgeschaltet.
Datenschutzerklärung Impressum

 
01.08.2017, 22:51 Uhr
Hauptmenü
|--> Infos
|--> Forum
|--> Fotos


Sprachwahl
Sprache auswählen:




Online
Aktuell 1 Gast und 0 registrierte Benutzer online.

Anmeldung

Anmeldung




 





Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
Autor Nachricht
rgerhards
Titel: Sinn der Übergabe von Arrays per Referenz  BeitragVerfasst am: 04.11.2008, 07:39 Uhr



Anmeldung: 25. Sep 2006
Beiträge: 688

Eine interessante Fragestellung:

> Wie groß da ist der Unterschied bezüglich Performance und
> Speicherplatzbedarf - bei Array mit maximal 200 Elementen?

Hier muss man überlegen, was eigentlich passiert.

Nehmen wir an, die Funktion, die da aufgerufen wird, macht etwas sehr Einfaches, z.B. das lineare Suchen eines Elements innerhalb des Arrays. Dann braucht sie schlimmstenfalls 200 Durchläufe, um dieses Element zu finden, wird im Mittel aber deutlich schneller sein. Nehmen wir an, dass jeder Schleifendurchlauf 3 Maschinenoperationen benötigt. Im schlimmsten Fall hast Du dann ca. 600 Maschinenoperationen für die Verarbeitung.

Nun nehmen wir an, dass das Kopieren des Arrays je Element 1 Maschinenoperation benötigt. In diesem Fall werden allein für den Aufruf ca. 200 Maschinenoperationen benötigt. Die Gesamtverarbeitungszeit beträgt somit 800 Maschinenoperationen, von denen ein Viertel vermeidbar wäre, wenn per Referenz übergeben würde. Das ist durchaus ein beachtlicher Unterschied.

Nun kann man natürlich die von mir aufgestellte konkrete Rechnung in der einen oder anderen Weise angreifen. Das war aber nur ein Beispiel. Lass es mich generell einmal so ausdrücken:

Je geringer die eigentliche Verarbeitungszeit innerhalb der Funktion ist, umso höher wiegt der durch die Wertübergabe verursachte Overhead. Im einen Extrem kann der Overhead die Gesamt-Laufzeit dominieren und im wesentlichen bestimmen. Im anderen Extrem ist der Overhead zu vernachlässigen, da die Funktion selbst entsprechend teuer ist. Prinzipiell ist der Overhead in diesem Fall aber trivial zu vermeiden und dafür müssen vom Design-Ansatz auch keine Kompromisse eingegangen werden. Daher ist die Übergabe per Referenz sinnvoll.

Es gibt genau aus diesem Grunde in allen modernen Programmiersprachen auch entsprechende Konstrukte.

Rainer
 
 Benutzer-Profile anzeigen Private Nachricht senden  
Antworten mit Zitat Nach oben
Beiträge vom vorherigen Thema anzeigen:     
Gehe zu:  
Alle Zeiten sind GMT + 1 Stunde
Neues Thema eröffnen   Neue Antwort erstellen
Vorheriges Thema anzeigen Druckerfreundliche Version Einloggen, um private Nachrichten zu lesen Nächstes Thema anzeigen
PNphpBB2 © 2003-2007 
:: RSS Feed: ::
Page created in 0.146076202393 seconds.

Ferientips - das Urlaubsweb - Jan Gerhards - Ulrike Gerhards - Ulrike Gerhards Foto Site