get_eval_cost
*************


BEMERKUNGEN
===========

   Der Maximalwert betraegt zur Zeit 1.500.000 Ticks (Stand: 2020).

   Sollten die Ticks waehrend der Ausfuehrung irgendwo auf 0 fallen,,
   wird ein Fehler der Art "too long eval" erzeugt.

   Diese Funktion dient dazu, solche Fehler zu verhindern oder genauer
   zu lokalisieren an welchen Stellen im Code wieviel Ticks verbraucht
   werden.


BEISPIELE
=========

      // Ticks zaehlen
      void foo()
      {
        int prev, used, i;

        prev=get_eval_cost(); // Merken, was bis hierhin verbraucht wurde
        for (i=0;i<=1000;i++) // Dann kommt der zu testende Code, zB eine
        {                     // Schleife
          ...
        }
        used=prev-get_eval_cost(); // Berechnung der Differenz
        printf("Die Schleife verbrauchte %d Ticks.\n", used);
      }

      // Ticks im Auge behalten bei der Ausfuehrung
      foreach(...)
      {
        ... // komplexer code
        if (get_eval_cost() < 100000)
          break;
      }
