Dennis Wronka
Soulcollector
So, nachdem ich jetzt das Einlesen von STDIN umgebaut habe, sodass in 1KB-Bloecken gelesen wird hat sich die Ausfuehrungszeit des Scripts schonmal um ein paar Sekunden gebessert. Bei meiner 6.5MB grossen Testmail liegt der Unterschied bei ca. 7 Sekunden.
Nun habe ich auch versucht an der Ausgabe was zu feilen, dazu hab ich mal mit time gemessen wie lange diese beiden Anweisungen brauchen um verschiedene eMails auszugeben.
oder so
ausgebe.
Eigentlich sollte ja, meinem Verstaendnis nach, die obere Version wegen eventueller Formatierung etwas langsamer sein, oder?
Bei kleinen Dateien scheint das wohl nicht der Fall zu sein, denn eine knapp 2 KB grosse eMail wird mit printf() ein klein wenig schneller ausgegeben als mit fwrite().
Die beiden anderen eMails, eine mit 1.9MB, eine mit 6.5MB, waren jeweils bei der Ausgabe mit fwrite() etwas schneller.
Alles in allem scheint es aber keinen sehr grossen Unterschied zu machen, jedoch denke ich, dass fwrite() evtl. besser skaliert wenn es sich um grosse Datenmengen bei der Ausgabe handelt.
Ich hatte auch probiert in den meisten Faellen strncat() durch strncpy() zu ersetzen. Was aber wieder dazu fuehrte, das die Mail ziemlich zerwurstet ausgegeben wurde.
Das war auch der Grund warum ich von strncpy() ueberhaupt zu strncat() gewechselt bin.
Hier mal ein kleines Beispiel.
Original:
Nun habe ich auch versucht an der Ausgabe was zu feilen, dazu hab ich mal mit time gemessen wie lange diese beiden Anweisungen brauchen um verschiedene eMails auszugeben.
Code:
printf("%s",email);
Code:
fwrite(email,sizeof(char),strlen(email),stdout);
Eigentlich sollte ja, meinem Verstaendnis nach, die obere Version wegen eventueller Formatierung etwas langsamer sein, oder?
Bei kleinen Dateien scheint das wohl nicht der Fall zu sein, denn eine knapp 2 KB grosse eMail wird mit printf() ein klein wenig schneller ausgegeben als mit fwrite().
Die beiden anderen eMails, eine mit 1.9MB, eine mit 6.5MB, waren jeweils bei der Ausgabe mit fwrite() etwas schneller.
Alles in allem scheint es aber keinen sehr grossen Unterschied zu machen, jedoch denke ich, dass fwrite() evtl. besser skaliert wenn es sich um grosse Datenmengen bei der Ausgabe handelt.
Ich hatte auch probiert in den meisten Faellen strncat() durch strncpy() zu ersetzen. Was aber wieder dazu fuehrte, das die Mail ziemlich zerwurstet ausgegeben wurde.
Das war auch der Grund warum ich von strncpy() ueberhaupt zu strncat() gewechselt bin.
Hier mal ein kleines Beispiel.
Original:
strncat():From: test@test.de
X-KMail-Transport: LocalMail
To: test@test.de
Subject: test-clean
Date: Thu, 22 Dec 2005 15:57:30 +0800
User-Agent: KMail/1.7.2
X-KMail-CryptoFormat: 15
MIME-Version: 1.0
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
X-Original-Status: R
X-Original-X-Status: N
X-KMail-EncryptionState: N
X-KMail-SignatureState: N
X-KMail-MDN-Sent:
X-Original-X-UID: 21
X-Length: 560
X-Original-Status: RO
X-Original-X-Status: RSC
X-UID: 25
test
strncpy():From: test@test.de
X-KMail-Transport: LocalMail
To: test@test.de
Subject: test-clean
X-Virus-Status: No
X-Virus-Checker: Scanned by mailscan 0.9 (No virus found)
Date: Thu, 22 Dec 2005 15:57:30 +0800
User-Agent: KMail/1.7.2
X-KMail-CryptoFormat: 15
MIME-Version: 1.0
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
X-Original-Status: R
X-Original-X-Status: N
X-KMail-EncryptionState: N
X-KMail-SignatureState: N
X-KMail-MDN-Sent:
X-Original-X-UID: 21
X-Length: 560
X-Original-Status: RO
X-Original-X-Status: RSC
X-UID: 25
test
Es sollte recht offensichtlich sein, dass bei der letzten Version der Betreff abgeschnitten ist, die folgende Zeile mit ziemlichem Unsinn anfaengt und auch am Ende der eMail noch irgendein Unsinn angefuegt wurde.From: test@test.de
X-KMail-Transport: LocalMail
To: test@test.de
Subject: test-cle
j@X-Virus-Status: No
X-Virus-Checker: Scanned by mailscan 0.9 (No virus found)
Date: Thu, 22 Dec 2005 15:57:30 +0800
User-Agent: KMail/1.7.2
X-KMail-CryptoFormat: 15
MIME-Version: 1.0
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
X-Original-Status: R
X-Original-X-Status: N
X-KMail-EncryptionState: N
X-KMail-SignatureState: N
X-KMail-MDN-Sent:
X-Original-X-UID: 21
X-Length: 560
X-Original-Status: RO
X-Original-X-Status: RSC
X-UID: 25
test
Ñ