Netzwerk Abfragen Performance

Hallo paebels,

ich kenn mich in VCPP nicht aus, aber würde doch noch eine Anmerkungen zu deinem Code machen:

C++:
 while(durchlaeufe->MoveNext())
            {
                ListViewItem^temp = gcnew ListViewItem();
                temp->Text = file_array[i]->Name->ToString();
                temp->SubItems->Add(file_array[i]->CreationTime.Date.ToLongDateString());
                test->Add(temp);
                i++;
            }

Ich würde erwarten, dass es von dem IEnumerator "durchlaufe" irgendsowas gibt wie durchlaufe->Current, der das aktuelle Listitem zurück gibt.
Wenn Du, wie in deinem Beispiel, jedesmal den Indexer benutzt "file_array[i]" kannst du auch die for-schleife lassen. Außerdem kostet der Zugriff auf den Indexer mehr Zeit.

Sorry fürs Klug******en. ;)
 
Hi

kann zwar aus dem Kopf auch nicht sagen, wie das Enumerator-Wert-Abfragn genau heißt,
aber ja, das gibts. Enumerator und Index durchmischen ist auch ziemlich sinnlos, ja.

Aber die Schnelligkeit ist ganz ohne Enumerator wahrscheinlich am größten.
Nur ein for mit einem Zähl-int, und Indexzugriff.
Da muss keine Enumeratorinstanz angelegt werden,
kein GC diese wieder wegräumen etc. etc.

Und "VCPP" nennt sich übrigens C++/CLI.
Das normale C++ gibts trotzdem auch weiterhin in Visual Studio.

Gruß
 
Danke für die Antworten, nur löst das alles nicht auf.Das alles mit einem normalen Pfad bis zu 100mal schneller ist, als wenn man einen UNC Pfad benutzt der aber auf das lokale Laufwerk zeigt wie der normale pfad. Es darf keinen Unterschied geben, da da sSystem auch keinen macht.
MfG
oli
 
Hallo paebels,

ich kenn mich in VCPP nicht aus, aber würde doch noch eine Anmerkungen zu deinem Code machen:

C++:
 while(durchlaeufe->MoveNext())
            {
                ListViewItem^temp = gcnew ListViewItem();
                temp->Text = file_array[i]->Name->ToString();
                temp->SubItems->Add(file_array[i]->CreationTime.Date.ToLongDateString());
                test->Add(temp);
                i++;
            }

Ich würde erwarten, dass es von dem IEnumerator "durchlaufe" irgendsowas gibt wie durchlaufe->Current, der das aktuelle Listitem zurück gibt.
Wenn Du, wie in deinem Beispiel, jedesmal den Indexer benutzt "file_array[ i ]" kannst du auch die for-schleife lassen. Außerdem kostet der Zugriff auf den Indexer mehr Zeit.

Sorry fürs Klug******en. ;)
Wie arbeite ich denn dann mit dem Objekt aus der Liste weiter wenn ich Current benutzen will. Habe ich noch nie gemacht.
MFG
Oli
 
Hallo
ich habe es eh nochmal gegändert in in eine for each aber auch dies eist einfach nicht schneller.
Der Klotz ist immer die selbe Stelle
Code:
for each(FileInfo^ files in file_array)
			{
				ListViewItem^ temp = gcnew ListViewItem();
				temp->Text = files->Name->ToString();
				temp->SubItems->Add(files->CreationTimeUtc.ToShortDateString());
				temp->SubItems->Add(files->Length.ToString()+" "+"Bytes");
				temp->SubItems->Add(files->Extension->ToString());
Und zwar an der Stelle wo ist die Subitmes anfüge wirds z.B in System32 argh langsam. Zumindest über ubc Pfad.
Gruß Oli
 
Zurück