05.11.2013 Aufrufe

Vergleich von Delphi und Visual C++ - Inhalt

Vergleich von Delphi und Visual C++ - Inhalt

Vergleich von Delphi und Visual C++ - Inhalt

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Vergleich</strong> <strong>von</strong> <strong>Delphi</strong> <strong>und</strong> <strong>Visual</strong> <strong>C++</strong> - Kapitel 2B<br />

writeln(Addiere([2, 8.00, ' 5,00 DM']));<br />

Hier wird eine Integer-Zahl, eine Zahl vom Typ Double <strong>und</strong> ein String miteinander addiert. Die Ausgabe lautet 15.<br />

Operationen auf Varianten laufen langsamer ab als Operationen auf statisch typisierten Werten. Um eine <strong>Vergleich</strong>smöglichkeit zu schaffen, wurde eine<br />

zweite Funktion "AddiereStatisch" geschrieben, deren Parameter als statische Typen deklariert wurden. Eigene Messungen haben gezeigt, daß ein<br />

Aufruf der Funktion AddiereStatisch (mit statischen Parametern) 0,66 µs <strong>und</strong> ein Aufruf <strong>von</strong> Addiere (mit varianten Parametern) 40,65 µs benötigt,<br />

letzterer also ungefähr 60 mal langsamer ist. Die Messungen erfolgten auf einem Rechner mit Pentium-Prozessor (150 MHz Taktrate), 8 kByte<br />

Primär-Cache <strong>und</strong> 512 kByte Sek<strong>und</strong>är-Cache. Die Funktionen wurden jeweils 1 Mio. mal aufgerufen <strong>und</strong> die Zeiten gemessen. Es kann da<strong>von</strong><br />

ausgegangen werden, daß die betreffenden Programmteile ausschließlich im schnellen Cache-RAM abgelaufen sind.<br />

Prozedurale Datentypen ermöglichen es, Prozeduren <strong>und</strong> Funktionen als Einheiten zu behandeln, sie Variablen zuzuweisen <strong>und</strong> als Parameter<br />

übergeben zu können. Man unterscheidet zwei Kategorien <strong>von</strong> prozeduralen Typen: Zeiger auf globale Prozeduren <strong>und</strong> Methodenzeiger.<br />

Zeiger auf globale Prozeduren sind Zeiger auf Prozeduren <strong>und</strong> Funktionen außerhalb <strong>von</strong> Klassen. Der Zeiger speichert die Adresse der Funktion oder<br />

Prozedur. Hier ein Beispiel, bei dem ein prozeduraler Typ als Parameter für die Funktion SetWindowsHook deklariert wird:<br />

typedef<br />

LRESULT(CALLBACK* HookProc)(int code, WPARAM wParam,<br />

LPARAM lParam);<br />

V<br />

C<br />

+<br />

+<br />

int SetWindowsHook(int aFilterType, HookProc aFilterProc);<br />

{...<br />

/* bei einem späteren Aufruf <strong>von</strong> SetWindowsHook erwartet der Compiler beim Parameter aFilterProc die Adresse einer<br />

Funktion, die genauso deklariert wurde wie HookProc. Die Adresse einer Funktion erhält man durch den Adressoperator<br />

&<br />

*/<br />

}<br />

http://ourworld.compuserve.com/homepages/praxisservice/kapit2b.htm (14 of 52) [19.05.2000 15:30:09]

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!