Was ist performanter?



  • Die Ausgabe eines Leerzeichens oder die Ausgabe eines Tabs, was ja bedeuten würde, dass der Cursor ein paar Zeichen vorspringen muss.

    Vom Platzverbrauch sind beide Zeichen ja gleich groß.

    Meine Überlegung wäre hier, dass die Darstellung des Leerzeichens performanter ist, da bei einem Tab ja gezählt werden muss, wie viele Zeichen der Cursor vorspringen muss.
    Und wenn die Tabsize noch variabel eingestellt ist, dann muss noch nachgeschlagen werden, wie weit der Cursor vorspringen muss.

    In Assembler gedacht hätte man also eine in Assemblercode programmierte for Schleife, inkl. der Abfrage einer Adresse wo die Tabsize drin steht, damit man weiß, wie weit die for Schleife vorspringen muss.

    Ist meine Überlegung in so weit richtig?

    Auf heutigen Maschinen ist das natürlich alles irrelevant, aber mir geht es hier um eine Prinzip- und Verständnisfrage.

    Problematisch halte ich allerdings noch die Frage, was der Fall wäre, wenn die Ausgabe nicht in einem grafischen Modus erfolgt, sondern in einem klassischen Textmodus.
    Da könnte ich mir vorstellen, dass so manche alte Hardware entsprechende Routinen eingebaut hat, so dass der TAB genauso viel Performance kostet wie das Leerzeichen.
    Ist das so richtig?


  • Mod

    Vollkommener Quark. Ein Bildschirm ist kein Drucker.



  • Was heißt Ausgabe? Evtl. ist die Eingabe "langsamer". Wir haben z.B. auch so einen kleinen Scripteditor in der Arbeit. Es gibt einen Event Handler, und der schaut bei Tastatureingaben, ob das eingegebene Zeichen ein Tag ist und ersetzt es durch die eingestellten x Leerzeichen, wenn Tabs durch Leerzeichen ersetzen eingestellt ist.
    Damit sind es schon Leerzeichen, die dargestellt werden.
    Wenn nicht, dann muss sich die "Textengine" drunter um die Darstellung der Tabs kümmern. Wir benutzen Qt. Da gibts verschiedene Möglichkeiten, Text zu zeichnen und einigen Funktionen kann man auch noch irgendwelche Optionen für Tabs mitgeben. Dann muss man evtl. ein bisschen mehr berechnen.
    Aber ich glaube, deine ganze Vorstellung von der ganzen Thematik ist sehr abstrakt. Qt benutzt unten drunter wiederum die harzbuff Bibliothek. Das Zeichnen von Text ist sehr komplex. Da werden auf jeden Fall sehr viele Berechnungen durchgeführt und sehr viele Optionen ausgewertet. Ob das ein Tab oder Leerzeichen ist, ist dabei nur ein winziger Schritt.



  • Ich denke, wenn man die Tabsize kennt, kann man mit einem Hardware-/API-Befehl direkt den Cursor dort hinspringen lassen ohne For-Schleifen.


Log in to reply