Hallo Profis!
Folgende Frage: Ich versuche in einem Windows-Service aus einer parallel.foreach - Schleife heraus Mails zu versenden: Template als string übergeben, Platzhalter wie Vor- und Nachnamen etc. ersetzen und dann per zugekaufter Komponente (die aber meiner Meinung nach eine Erweiterung der .net-eigenen Mailklassen ist, habs btw. auch per System.Net.Mail versucht) an das Windows-Smtp-Service zu senden (ein SmtpClient pro Thread).
Mein Problem ist nun, dass ich irgendwie keine großartige Geschwindigkeitssteigerung gegenüber einer normalen foreach-Schleife bekommen habe (ca. 10% Unterschied wenn überhaupt, hab das mal testweise per paralleloptions-Attribut auf einen Thread beschränkt). Der einzige großartige Unterschied war eine (viel) geringere Prozessorlast.
Meine Vermutung wäre nun, dass das Windows-Smtp-Service nur sequentiell beschickt werden kann und jeder Thread warten muss, bis der vorherige das Senden beendet hat (so könnte ich mir zumindest den leichten Geschwindigkeitsanstieg erklären).
Nun die eigentliche Frage: liege ich mit meiner Vermutung richtig oder muss ich da doch woanders weitersuchen? Und wenn ja, gibts da einen Ansatz, der mir bei der Lösung des Problems helfen könnte?
Theoretisch ist ja mein eigentliches Problem eh das Smtp-Service an sich, das sehr viel langsamer versendet als die Mails generiert werden. Allerdings steigt die Versandgeschwindigkeit natürlich erheblich, wenn das generieren abgeschlossen ist, was mir ingesamt wieder einen Zeitvorteil bringt.
Danke schonmal jetzt für eure Inputs!
lg, Christian
Folgende Frage: Ich versuche in einem Windows-Service aus einer parallel.foreach - Schleife heraus Mails zu versenden: Template als string übergeben, Platzhalter wie Vor- und Nachnamen etc. ersetzen und dann per zugekaufter Komponente (die aber meiner Meinung nach eine Erweiterung der .net-eigenen Mailklassen ist, habs btw. auch per System.Net.Mail versucht) an das Windows-Smtp-Service zu senden (ein SmtpClient pro Thread).
Mein Problem ist nun, dass ich irgendwie keine großartige Geschwindigkeitssteigerung gegenüber einer normalen foreach-Schleife bekommen habe (ca. 10% Unterschied wenn überhaupt, hab das mal testweise per paralleloptions-Attribut auf einen Thread beschränkt). Der einzige großartige Unterschied war eine (viel) geringere Prozessorlast.
Meine Vermutung wäre nun, dass das Windows-Smtp-Service nur sequentiell beschickt werden kann und jeder Thread warten muss, bis der vorherige das Senden beendet hat (so könnte ich mir zumindest den leichten Geschwindigkeitsanstieg erklären).
Nun die eigentliche Frage: liege ich mit meiner Vermutung richtig oder muss ich da doch woanders weitersuchen? Und wenn ja, gibts da einen Ansatz, der mir bei der Lösung des Problems helfen könnte?
Theoretisch ist ja mein eigentliches Problem eh das Smtp-Service an sich, das sehr viel langsamer versendet als die Mails generiert werden. Allerdings steigt die Versandgeschwindigkeit natürlich erheblich, wenn das generieren abgeschlossen ist, was mir ingesamt wieder einen Zeitvorteil bringt.
Danke schonmal jetzt für eure Inputs!
lg, Christian
Comment