Download vom WWW per VBA beschleunigen

Hallo,

ich habe in VBA ein Programm geschrieben, das Wetterdaten von ca. 4500 Wetterstationen (pro Station 83 Bytes) aus dem Internet runterlädt und protokolliert. In einem ersten Durchlauf wartet der Code pro Station bis zu 500 ms auf die Daten. Seiten, die innerhalb dieser Frist keine Daten lieferten, werden in einem 2. Durchlauf nochmals befragt, diesmal wartet der Code 2000 ms. Dadurch können in einem „vernünftigen“ Zeitraum (45 Minuten) fast alle Daten abgerufen werden. Die durchschnittliche Zugriffszeit aller im 1. Durchlauf erreichten Seiten beträgt ca. 350 ms.

Um den Code zu beschleunigen probierte ich ein bisserl rum mit Rechnerpower und Internetzugang, wobei weder ein schnellerer Rechner noch ein 2000er DSL (gegenüber ISDN) einen Geschwindigkeitsgewinn brachten. Auch eine gravierende Optimierung des Codes brachte nix.

Was meint ihr: was bremst die Datenübetragung so aus? Liegt das am Server? Oder an der Geschwindigkeit des Internets allgemein? Wie läßt sich der Zugriff beschleunigen? Oder ist meine gemessene Zeit normal?

Viele Grüße
Martin

Hallo Martin,

das wird wohl an den Antwortzeiten liegen, eine schnellere Datenübertragung hilft nicht, Du mußt warten, bis der Server antwortet. IMHO gibt es Internetzugänge, die kürzere Antwortzeiten als üblich haben. Mehr weiß ich nicht darüber, das habe ich auch nur mal hier bei w-w-w gelesen, am Besten stellst Du die Frage noch einmal im Bereich Internet bei ‚Provider‘. Ohne Vertragswechsel wird da aber nichts zu ändern sein.

Gruß, Rainer

Hallo Martin,

wenn die verbratene Zeit, aus den Responcezeiten der Server resultier, dann wird dir weder Provider-, Leitungs- oder was_auch_immer_wechsel nicht wirklich was bringen. Denn wenn eine 1MBit-Leitung 300ms auf den Server wartet, dann wartet eine 16MBit Leitung genausolange. Das bringt nur was bei der eigentlichen Datenuebertragung. Was dich wahrscheinlich weiter bringen wuerde waere die Anfragen an mehrere Server gleichzeit zu stellen, d.h. Multitasking auf der WinSock. Mittels C/C++ ist das nicht so schwer zu realisieren, mit VBA gehts auch ist aber eine bodenlose Fummelei. Dann kannst du naehmlich die Wartezeiten dazu nutzen, bereits bei anderen Servern anzufragen.

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like