Welche Ausgabe von Text ist schneller? In einerm Terminal/Konsole oder in einem Fenster?



  • Folgendes Problem:

    Ich will möglichst schnell Text auf dem Bildschirm anzeigen, wobei die
    Ausgabe in einer grafischen Umgebung geschieht. Z.B. Windows oder Linux Desktopoberfläche.

    Nun suche ich die schnellste Textausgabemöglichkeit für den Desktop.

    Die Windows Eingabeaufforderung scheint mir subjektiv nicht beonsders schnell zu sein. Kann es sein, daß das Ausgeben des Textes in einem Winapi Textfenster schneller geht?
    Wenn ja, wieviel würde ich gegenüber der Eingabeaufforderung an Zeit verlieren, wenn ich den Text in einem GTK+ Fenster ausgebe?

    Und wie sieht die gleiche Aufgabe unter Linux aus?
    Was ist schneller?
    Die Ausgabe in einem Gnome Terminal oder die Ausgabe in einem GTK+ Textfenster?

    PS:
    Mir ist natürlich klar, daß der Computer schneller den Text ausgibt als ich mitlesen kann, aber mir geht es halt darum ungefähr zu sehen wo der Computer gerade ist und dann den Computer anzuhalten. In der ganzen Zeit in der er aber nicht angehalten wird, sollte das ganze möglichst schnell runterrattern, der Comp hat nämlich ziemlich viel zu tun und sollte hier nicht ausgebremst werden aber den Text dennoch anzeigen.
    Gar nicht anzeigen geht also nicht.


  • Mod

    😕
    Kannst du nochmal genau erklären, was du vor hast? Ich verstehe deine Beschreibung nicht. Das klingt so als ob du eine schlechte Lösung für irgendein einfaches Problem hast. Wenn die Ausgabegeschwindigkeit von Text bei dir wichtig ist, machst du höchstwahrscheinlich etwas falsch.



  • Ist beides Langsam. Was langsamer ist musst du selbst nachmessen. Am Besten aber nicht jeden Schleifendurchgang was ausgegen, sondern nur jeden 1000sten, damit sparst du _SEHR_ viel Zeit.



  • Bei Programmen, die so furchtbar viel ausgeben, dass die Textausgabe ein Flaschenhals ist (kommt bei mir zB. regelmäßig bei SSH-Sessions vor) werfe ich gerne eine Screen-Session an, die ich dann detache, so tut das überhaupt nicht weh.

    Konsolenprogramme sind daher sehr praktisch. Du kannst natürlich auch einfach die Ausgabe in eine Datei umleiten und dann bei Bedarf ein tail -f oä. anwerfen.



  • nman schrieb:

    Bei Programmen, die so furchtbar viel ausgeben, dass die Textausgabe ein Flaschenhals ist (kommt bei mir zB. regelmäßig bei SSH-Sessions vor) werfe ich gerne eine Screen-Session an, die ich dann detache, so tut das überhaupt nicht weh.

    Was meinst du damit mit Screen-Session anlegen und detachen.

    Konsolenprogramme sind daher sehr praktisch. Du kannst natürlich auch einfach die Ausgabe in eine Datei umleiten und dann bei Bedarf ein tail -f oä. anwerfen.

    Das benötigt noch mehr Rechenzeit, da diese ja noch für Schreib- und Lesezugriffe zusätzlich verschwendet wird und die Schreibzugriffe bremsen ebenfalls.
    Hier darf man nicht nur meine Anwendung sehen, die schnell sein soll, sondern
    der Computer muß hier als ganzes betrachtet werden. D.h. jedes Zweitprogramm das hier noch zusätzlich arbeitet und z.B. den Text ausgibt bremst in der gesamten Betrachtung den Rechner aus.



  • SeppJ schrieb:

    😕
    Kannst du nochmal genau erklären, was du vor hast? Ich verstehe deine Beschreibung nicht. Das klingt so als ob du eine schlechte Lösung für irgendein einfaches Problem hast. Wenn die Ausgabegeschwindigkeit von Text bei dir wichtig ist, machst du höchstwahrscheinlich etwas falsch.

    Ganz einfach, ich will ein paar Berechnungen durchführen und nebenbei zusehen können, wo er Rechner bei der Berechnung gerade steht.
    Die Dauer die so eine Berechnung dauern kann, kann durchaus mehrere Tage betragen.

    Deswegen ist es auch schlecht möglich, die Zwischenergebnisse in einer Datei zu speichern, weil dann die Festplatte sehr schnell voll wäre.

    Wenn ich es mir so recht überlege, dann wäre eine Art Interruptsteuerung, die mir mal kurz den derzeit berechneten Text anzeigt die beste Lösung.
    Und für die Programmrückmeldung, damit ich auch noch sehe, ob das Programm arbeitet könnte ich mir so etwas ausgeben lassen, ein Zeichen das sich im Kreis dreht:

    \
    |
    /



  • Kannst du da die Ausgabe nicht unterdrücken und stattdessen allgemeine Infos ausgeben (Schritt 5 von 9: Matrixen berechnen, 68% erledigt)?



  • Blue-Tiger schrieb:

    Ist beides Langsam. Was langsamer ist musst du selbst nachmessen. Am Besten aber nicht jeden Schleifendurchgang was ausgegen, sondern nur jeden 1000sten, damit sparst du _SEHR_ viel Zeit.

    Ja, das wäre auch eine Überlegung wert.

    Würde ich Zeit gewinnen wenn ich die Zwischenergebnisse in einem Array Zwischenspeichere und dann das ganze Array ausgebe?



  • witte schrieb:

    Kannst du da die Ausgabe nicht unterdrücken und stattdessen allgemeine Infos ausgeben (Schritt 5 von 9: Matrixen berechnen, 68% erledigt)?

    Kann ich schon, nur brauch ich halt die Möglichkeit bei Bedarf mal reinzuschauen.
    Quasi also so ne Art Debugmodus um zu sehen, ob mit der Berechnung auch alles in Ordnung ist.


  • Mod

    Lass das Programm auf Signale horchen und wenn ein bestimmtes Signal kommt, gibt es die gewünschten Meldungen aus.

    Inspiration dafür ist das gute alte dd. Das läuft auf großen Platten gerne mal ein paar Stunden, hat aber keine Statusanzeige. Wenn man dem Prozess aber das Signal USR1 schickt, bekommt man eine Statusausgabe. Kannst du ja mal ausprobieren:

    >** dd if=/dev/zero of=/dev/null & [1] 2689 **> kill -USR1 2689
    25679612+0 records in
    25679611+0 records out
    13147960832 bytes (13 GB) copied, 11.8042 s, 1.1 GB/s



  • dann waer nman's loesung (das programm in 'nem screen laufen lassen und den detachen) evtl. gut. Google mal nach "GNU screen".


Anmelden zum Antworten