Sie befinden sich hier: Termine » Prüfungsfragen und Altklausuren » Hauptstudiumsprüfungen » Lehrstuhl 2 » Optimierungen in Übersetzern, Philippsen   (Übersicht)

Optimierungen in Übersetzern, Philippsen

Zwei Prüflinge bekamen ungefähr folgenden Code vorgesetzt mit der Frage, was kann man hier optimieren?

  doIt(int ***A, int ***B, int ***C, int *D, int n) {
      int x = 42;
      int y = 23;
 
      int *E = malloc(...);
 
      for (int i = 0; i < n - 1; i++) {
          for (int j = 0; j < n - 1; j++) {
              for (int k = 0; j < n - 1; k++) {
                  A[i][j][k] = max(A[i][j][k], A[i][j+1][k+1]);
                  A[i][j][k] = min(A[i][j][k], A[i+1][j][k+1]);
 
                  if (j % 2 == 1) {
                      x = n;
                  } else {
                      y = n;
                  }
 
                  C[i][j][k] = D[i] + x;
              }
          }
 
          E[i] = ...
      }
 
      for (int i = 0; i < n - 1; i++) {
          D[i] = D[i] + 482;
      }
  }

Im Gegensatz zu anderen Prüfungsprotokollen wollen wir hier nicht auf die behandelten Punkten eingehen (nichts unerwartetes), sondern dazu aufrufen:

Setzt euch mit einer zweiten Person hin und spielt die Prüfung durch, indem ihr versucht schrittweise verschiedene Optimierungen zu nennen und ggf. durchzuführen (inklusive Grundlagen worauf diese basieren, z.B. KFG, Dominanz, lebendige Variablen oder Probleme z.B. Aliase). Die zweite Person stellt dann entweder tiefergehende Fragen oder sagt auch mal, „auf dieses Thema möchte ich jetzt nicht eingehen, was geht denn noch?“.

In der Prüfung ist es kein Problem, eine andere als eine der erwarteten Optimierungen zu nennen. Man muss nur unbeirrt mit dem nächsten Vorschlag weiter machen.