Warum ist DOS langsamer als Linux?

04/01/2010 - 22:47 von Manuel Rodriguez | Report spam
Mein System: Laptop, 400 Mhz CPU,
Ubuntu Linux + MS-DOS auf Bootdiskette

Problem: ein simples Assemblerprogramm braucht unter DOS 10x lànger
als unter Linux. Das Programm besteht aus einer Schleife die per loop-
Befehl durchlaufen wird. Innerhalb der Schleife gibt es ein printf auf
die Konsole.

Frage: gibt es unter DOS einen speziellen Modus um das Assembler-
Programm zu tunen, vielleicht Protected Mode oder so? Ich kapier das
nicht, eigentlich müsste die Schleife in beiden Betriebssystemen
gleichschnell ablaufen. Denn es ist der gleiche Algorithmus, die
gleiche CPU; nur Linux braucht eben nur 1/10 der Zeit.

Der Code:
CX auf 30000
go:
Bei DOS Int 21h
Bei Linux Int 80h
Loop go
 

Lesen sie die antworten

#1 Hans-Bernhard Bröker
04/01/2010 - 23:48 | Warnen spam
Manuel Rodriguez wrote:

Problem: ein simples Assemblerprogramm braucht unter DOS 10x lànger
als unter Linux. Das Programm besteht aus einer Schleife die per loop-
Befehl durchlaufen wird. Innerhalb der Schleife gibt es ein printf auf
die Konsole.



Das ist nicht dein Programm, was da lànger braucht, sondern die
Konsolenausgabe selbst ist in DOS+BIOS schnarchlangsam im Vergleich zur
Linux-Konsole. Das war schon zu seligen DOS-Zeiten so, und ist
heutzutage, wo niemand mehr sich drum schert, wie gut die
RealMode-Servies eines BIOS implementiert sind, sicher nicht besser
geworden.

Schon ein simples "type" bzw. "cat" einer ordentlich langen Textdatei
zeigt den Unterschied.

Man kann das bei Bedarf mit Treibern wie NNANSI.SYS radikal verbessern,
die den Job des BIOS bezüglich Bildschirmausgabe an sich reißen, und ihn
erheblich schneller erledigen.

Oder man vergisst das ganze, und kümmert sich stattdessen um wichtige Dinge.

Frage: gibt es unter DOS einen speziellen Modus um das Assembler-
Programm zu tunen, vielleicht Protected Mode oder so?



Nein. Denn das hat mit dem Assemblerprogramm an sich gar nichts zu tun.
Und Protected Mode würde es, wenn überhaupt, höchstens noch langsamer
machen.

Ähnliche fragen