Index of /~oj14ozun/.old/sp2-ws21/yes

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]Makefile2021-12-05 03:00 1.3K 
[TXT]yes.c2021-12-08 13:35 1.1K 

.readme.html

Benchmaks für yes(1)

Siehe die yes Manpage, um zu verstehen das dieses Programm macht.

In der Datei yes.c werden mit ifdef-Fallunterscheidungen verschiedene Ansätze implementiert. Diese unterscheiden sich zuerst in der Größe des lokalen Buffers, welche entweder

groß ist. Der zweite Unterschied liegt im Ausgabemechanismus:

In der Makefile baut das Pseudo-Target test alle Variationen des Programms, und bemisst wie viele Zeichen in fünf Sekunden ausgebenden werden können. Dieses ist als eine “Art” “wissenschaftlicher” Ansatz zu verstehen, um die Effekte unterschiedlicher Einflüsse zu bemessen.

Hier sind die Ergebnisse, zusammengefasst:

Programm Zeichen Buffergröße Ausgabe
./yes-ps-nb-fw 3744967590 Page-Size Kein Buffer
./yes-pa-xx-wr 3725147790 Page-Aligned write
./yes-bs-bb-fw 3669958656 BUFSIZ Block-Buffer
./yes-ps-bb-fw 3643596800 Page-Size Block-Buffer
./yes-pa-bb-fw 3445735424 Page-Aligned Block-Buffer
./yes-ps-lb-fw 3156094302 Page-Size Line-Buffer
./yes-ps-xx-wr 2950193610 Page-Size write
./yes-bs-xx-wr 2757712230 BUFSIZ write
./yes-pa-nb-fw 2709903105 Page-Aligned Kein Buffer
./yes-bs-nb-fw 2640636180 BUFSIZ Kein Buffer
./yes-pa-lb-fw 1728519973 Page-Aligned Line-Buffer
./yes-ms-bb-fw 121688064 Message-Size Block-Buffer
./yes-ms-lb-fw 107204608 Message-Size Line-Buffer
./yes-bs-lb-fw 24706056 BUFSIZ Line-Buffer
./yes-ms-xx-wr 4931256 Message-Size write
./yes-ms-nb-fw 4541790 Message-Size Kein Buffer

Wir erkennen das der beste Fall das Buffering umgeht, wenn wir in der Anwendung bereits uns darum sorgen können das so selten wie möglich Daten ausgegeben, ie. daher auch möglichst wenige Systemaufrufe gebraucht werden. Im schlimmsten Fall wird fwrite/write für jede Nachricht aufgerufen, was in diesem Fall zu einer ~800-fachen Verlangsamung führt, beim gleichen verhalten.


Zum selbst-Testen, muss man nur die Makefile und yes.c herunterladen im gleichen Verzeichnis, und

$ make -s test

ausführen.