PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was ist schneller (For-Schleifen mit Speicherzugriff)


ABC
2005-01-19, 18:09:29
Hi,
ist es schneller z.B bei einem Excel Dokument mit einer For Schleife Items
einzulesen wie in dem Beispiel

for(int i=0;i<1000000;i++)
{
Variant data = MyWS.OlePropertyGet("Cells").OlePropertyGet("Item",i,1).OlePropertyGet("Value");
test=data;
if(test=="")
{
ShowMessage("Import erfolgreich");
V.OlePropertySet("Visible", false);


break;
}
this->verband->set_Vorname(data);
data = MyWS.OlePropertyGet("Cells").OlePropertyGet("Item",i,2).OlePropertyGet("Value");
this->verband->set_Nachname(data);
data = MyWS.OlePropertyGet("Cells").OlePropertyGet("Item",i,3).OlePropertyGet("Value");
this->verband->set_Birthday(data);
data = MyWS.OlePropertyGet("Cells").OlePropertyGet("Item",i,4).OlePropertyGet("Value");
this->verband->set_Gewicht(data);
data = MyWS.OlePropertyGet("Cells").OlePropertyGet("Item",i,5).OlePropertyGet("Value");
this->verband->set_geschl(data);
data = MyWS.OlePropertyGet("Cells").OlePropertyGet("Item",i,6).OlePropertyGet("Value");
this->verband->set_Nationaliaet(data);
this->verband->set_gewichts_klasse();
this->verband->set_currentPos(this->verband->get_current_Pos()+1);

oder soll ich lieber für jedes Item eine For Schleife laufen lassen?

Pinoccio
2005-01-19, 18:24:09
Was ist das für eine Sprache?
An sich würde ich vermuten, daß es etwas schneller wird, wenn du nicht jedesmal
MyWS.OlePropertyGet("Cells").OlePropertyGet("Item",i,2)... sondern irgendwie außerhalb der Schleife
temp=MyWS.OlePropertyGet("Cells");
und dann
temp.OlePropertyGet(...)...

Für jedes Irtem 'ne eigene Schleife ist IMHO unsinnig, weil du ja dann sehcsmal so oft ==null testen müsstest.
Ansonsten mal austesten, wenn das geht.
mfg Sebastian

ABC
2005-01-19, 19:08:22
Die Programmiersprache ist c++. Ich benutze ein EXCEL OLE Objekt.

Thx,die Verbesserungen hat 200 ms gebracht.

noid
2005-01-20, 10:10:47
Bis auf die Optimierung in deinem Code (was ja schon erfolgt ist) müsste man eben wissen wie die Daten im HSSF ;) abgelegt sind.

Pinoccio
2005-01-20, 11:48:29
Die Programmiersprache ist c++. Ich benutze ein EXCEL OLE Objekt.
Thx,die Verbesserungen hat 200 ms gebracht.
200ms von wie viel? ;-)

mfg Sebastian

CharlieB
2005-02-05, 22:37:59
wenn du zeitkritische ANwendungen Progst dann lass Zählschleifen
absteigend gegen Null laufen.

Das ist schneller ;)

Dann würd ich die for-Schl. gegen while-Schleifen ersetzen,
das bringt je nach Compiler auch noch ein bischen was


;)

Xmas
2005-02-05, 22:44:29
Das ist hier aber nicht die Spielwiese.

CharlieB
2005-02-05, 23:48:40
Das ist hier aber nicht die Spielwiese.


das was ich schrieb ist bewiesen ...


oder kennst du nicht die Bedeutung des ZeroFlag ?



EDIT: Achso ich verstehe ...
jeder mit wenig Beiträgen ist bei alten Hasen gleich der Unwissende

zeckensack
2005-02-06, 06:11:53
oder kennst du nicht die Bedeutung des ZeroFlag ?Leider kennen sich gewisse *hust*MS*hust* Compiler mit Flags generell nicht aus. Die testen einfach nochmal, obwohl die Flags schon das Ergebnis enthalten :usad:

Und bei Visual B for Äxl wird's wohl kaum besser sein als bei den "ernsthaften" Compilern aus gleichem Hause.

Demirug
2005-02-06, 09:36:36
Leider kennen sich gewisse *hust*MS*hust* Compiler mit Flags generell nicht aus. Die testen einfach nochmal, obwohl die Flags schon das Ergebnis enthalten :usad:

Kauf dir doch mal einen neuen. Der 7.1 kennt sich sehr gut mit Flags aus. Daneben macht er im Bezug auf Schleifen optimierung noch andere Dinge die manchmal dazu führen das die Schleife komplett verschwindet oder auch mal in der Richtung umgekehrt wird. Natürlich nur wenn es am Resultat nichts verändert.

hh42h
2005-02-06, 09:58:38
Welche Entwicklungsumgebung benutzt du? Gibt es da keinen Profiler?

del_4901
2005-02-06, 10:54:30
wenn du zeitkritische ANwendungen Progst dann lass Zählschleifen
absteigend gegen Null laufen.

Das ist schneller ;)

Dann würd ich die for-Schl. gegen while-Schleifen ersetzen,
das bringt je nach Compiler auch noch ein bischen was


;)

ein kluger Compiler sollte das von alleine machen. Nur leider lassen sich die wenigsten davon überzeugen, und wenn ja, dann nur über komplizierte Switches.

Coda
2005-02-06, 10:56:37
das was ich schrieb ist bewiesen ...Nein, das ist absoluter Ranz.

Schon allein weil solche "Optimierungen" kontraproduktiv sind.

Pinoccio
2005-02-06, 13:40:03
Das ist hier aber nicht die Spielwiese.
Völlig OT: Das ist eine Asuwikrung der neuen Markplatzrestriktionen ...

mfg Sebastian