On Wed, 2006-05-10 at 16:25 +0200, Nagatoro wrote: > Matthias Langer wrote: > > On Wed, 2006-05-10 at 13:58 +0200, Matthias Langer wrote: > >> On Wed, 2006-05-10 at 07:51 +0200, Nagatoro wrote: > >> [snip] > >>> Least: > >>> ... Gnome-terminal, slow, and in my opinion horrible color support. > >> [snip] > >> > >> Gnome terminal used to be slow, but vte (the underlying library) has > >> beem optimized heavily during the last few month. I've a simple program > >> that measures the speed of terminals. According to this program > >> gnome-terminal is now __50__ times faster than it was 5 month ago. > >> > >> Matthias > > > > Well, here are some comparisons done with my test-prog (attached) > > (higher is better): > > > > eterm: ~ 14 000 l/s > > xterm: ~ 8 500 l/s > > gnome-terminal: ~ 3 500 l/s > > frame-buffer: ~ 40 l/s > > Om my (slow?) laptop I get: > > frame-buffer: 34 l/s > rxvt-unicode: 12 000 l/s > xterm: 4500 l/s > Konsole: 6666 l/s > gnome-terminal: 6666 l/s > ^^^ > _not_ faked :) > Maybe this has something to do with your screen resolution; as you are using a 'slow' laptop, i guess you are using 1024x768, while i use 1280x1024 in my athlon-xp 2400+.
PS: Did you pass any values to the prog ? It's because, it stopps after it has written 20 000 lines if no arguments are passed. For very fast terminals this is bad; Imagine a terminal that puts out 11 000 lines per second. It will then take about 1.8 s to write 20 000 lines. However, the program uses time(...) and therefore it will write: 20 000 l/s. The '6666' is not a big surprise, because 20 000 / 3 = 6666.7. Thus, if your terminal needs from 3s to 4s for 20000 lines, you will always get this result if specifying no arguments. As i said before this is just a quick hack to make some comparisons. However, here is a slightly impoved version ...
#include <cmath> #include <ctime> #include <iostream> #include <string> #include <algorithm> using namespace std; static string rStr("AaBbCcEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz(){}[]?*+-/_-:.;, "); int main(int argc, char **argv) { int lines; if(argc == 1) lines = 20000; else if(argc == 2) { lines = atoi(argv[1]); if(lines < 1000) { cerr << "Please enter at least '1000' for lines !" << endl; return 1; } } else { cerr << "Usage: tspeed <lines>" << endl; return 2; } time_t t1 = time(NULL); for(int i=0; i != lines; ++i) { cout << rStr << endl; random_shuffle(rStr.begin(), rStr.end()); } time_t t2 = time(NULL); time_t elapsed = t2-t1; if(elapsed == 0) { cerr << endl; cerr << "Writing " << lines << " lines to the screen took less than one second." << endl; cerr << "Please choose a bigger value for lines." << endl; return 3; } double speed = double(lines)/double(elapsed); if(elapsed < 6) { cout << endl; cout << "Warning: writing " << lines << " lines took fewer than 6 seconds." << endl; cout << "The the results may be inaccurate." << endl; cout << "Try tspeed <value> with value > " << ceil(6*speed) << endl; } cout << endl; cout << "terminal speed: " << floor(speed) << " l/s" << endl; return 0; }