Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.629 Beiträge
 
Delphi 2007 Enterprise
 
#15

AW: Case-Statement für Float-Werte

  Alt 17. Jun 2020, 01:08
Um den Grund an sich noch mal auf den Punkt zu bringen:

CASE und IF sind nur funktional miteinander verwandt. CASE war ursprünglich mehr als nur eine andere (kürzere) Schreibart für eine Kette von IF-Statements, da es dem Compiler hier einfacher war effizienteren Maschinencode daraus zu generieren. Einschränkung: Da dafür Sprungtabellen (bestehend aus relativen Adressen, die halt immer ganzzahlig sind) aus den zu unterscheidenden Werten gebildet wurden/werden, waren/sind nur solche als Kriterium zulässig. In Zeiten, in denen jeder einzelne Prozessorzylus noch in vielfachen (Dollar-)Cents zu bemessen war, war das eine lukrative Angelegenheit.
Und auch heute noch sind solche "kleinkarierten" Optimierungen hier und da noch messbare Vorteile - jedoch werden diese immer seltener, und das Argument der einfacheren Schreib-/Lesbarkeit ist in den Vordergrund gerückt. Welcher Seite man als Compiler-Hersteller nun die Stange hält, ist meiner Meinung nach weitestgehend Geschmackssache. Delphi hat die Optimierbarkeit beibehalten, und somit die Beschränkung auf Ordinaltypen. Will man das nicht, muss man mit diesem Compiler etwas tricksen um die Lesbarkeit zu erhalten, oder einen anderen wählen und die Optimierbarkeit aufgeben.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat