Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Portierung von Java nach C

Ähnliche Präsentationen


Präsentation zum Thema: "Portierung von Java nach C"—  Präsentation transkript:

1 Portierung von Java nach C
EDV1 - Portierung Java C

2 Verbindungen zwischen Java und C
Warum Verbindung zwischen Java und C? Java und C haben unterschiedliche Vor- und Nachteile Java C Portabilität ++ + Geschwindigkeit des Programms - Standardisierung der GUI Standardisierung der Sprache Verfügbarkeit von Software Programmsicherheit Programmwartbarkeit EDV1 - Portierung Java C

3 Es ergibt sich die Notwendigkeit Java und C zu "verheiraten".
In nutzerfreundlichen Anwendungen wird der weit Überwiegende Teil (z.B. 95%) des Programmtextes für die Oberfläche und die Behandlung von Fehlern und Ausnahmen benötigt. Der Rest (z.B. 5%) wird für die Realisierung des eigentlichen Inhaltes (z.B. der Numerik) entwickelt. Andererseits wird der weit überwiegende Teil der Rechenzeit (z.B. 99%) in einem sehr kleinen Teil des Quelltextes verbraucht. Der Rest (z.B. 1%) wird für die Realisierung der Oberfläche und für die Behandlung von Fehlern und Ausnahmen benötigt. Ein größeres Projekt besteht also in der Regel aus einem großen Teil in dem wenig Ressourcen benötigt werden, der aber sehr kompliziert zu entwickeln ist und einem kleinen Teil der die Ressourcen verbraucht aber relativ einfach strukturiert ist. Für die Entwicklung der Oberfläche eignet sich Java sehr gut. Für die Programmierung des numerischen Kernes eignet sich C (oder FORTRAN) besser. Es ergibt sich die Notwendigkeit Java und C zu "verheiraten". EDV1 - Portierung Java C

4 Umsetzung von Java nach C
Die Entwicklung eines Algorithmus ist sehr günstig in Java zu realisieren. Wenn das Programm ausgereift ist kann es dann in C umgesetzt werden, um die notwendige Geschwindigkeit zu erreichen. Mögliche Vorgehensweise: Entwickeln und Testen des Programms in Java Feststellen der Ressourcen-kritischen Programmteile mit Hilfe eines Profilers Umsetzen der Ressourcen-kritischen Programmteile nach C EDV1 - Portierung Java C

5 QuickSort.java public class QuickSort { static long Vergleich = 0;
static long Tausch = 0; static long Aufruf = 0; public static void QuickSort(double[] v) QuickSort(v, 0, v.length-1); } EDV1 - Portierung Java C

6 public static void QuickSort(double[] v, int l, int r){ Aufruf++;
int i = 0; int j = 0; double x = 0; double h = 0; i = l; j = r; x = v[(l+r)/2]; do { while (v[i] < x) { i++; Vergleich++; } while (x < v[j]) { j--; Vergleich++; } if (i <= j) { h = v[i]; v[i] = v[j]; v[j] = h; i++; j--; Tausch++; } } while (i <= j); if (l < j) QuickSort(v, l, j); if (i < r) QuickSort(v, i, r); EDV1 - Portierung Java C

7 Umsetzung in C static long Vergleich = 0; static long Tausch = 0;
static long Aufruf = 0; Umsetzung in C In einem Modul: int Vergleich; int Tausch; int Aufruf; In weiteren Modul: extern int Vergleich; extern int Tausch; extern int Aufruf; Die Initialisierung von extern-Variablen ist nicht erlaubt. Es muss also eine explizite Initialisierung im Programm stattfinden: Vergleich = 0; Tausch = 0; Aufruf = 0; EDV1 - Portierung Java C

8 Umsetzung in C Programmkopf: public static void QuickSort(double[] v)
bzw. public static void QuickSort(double[] v,int l,int r) Umsetzung in C Programmkopf: void QuickSort(double[] v, int len-1) Der zweite Aufruf kann ersetzt werden durch: QuickSort(v+l,r-l); EDV1 - Portierung Java C V[0] V[1] V[l] V[r] V[len-2] V[len-1] V+l[0] V+l[r-l]

9 r +i,r-i Aufruf++; int i = 0; int j = 0; double x = 0; double h = 0;
i = l; j = r; x = v[(l+r)/2]; do { while (v[i] < x) { i++; Vergleich++; } while (x < v[j]) { j--; Vergleich++; } if (i <= j) { h = v[i]; v[i] = v[j]; v[j] = h; i++; j--; Tausch++; } } while (i <= j); if (l < j) QuickSort(v, l, j ); if (i < r) QuickSort(v, i, r ); r EDV1 - Portierung Java C +i,r-i


Herunterladen ppt "Portierung von Java nach C"

Ähnliche Präsentationen


Google-Anzeigen