Forum: PC-Programmierung opendir() WinXP - was macht das eigentlich ?


von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Servus,

opendir() hat gerade >45 min gebraqucht bis es mir die erste Datei
übergeben hat. Ok, es sind ca 1,15 Mio Files aber was macht das da
so ewig ?

von Robert L. (lrlr)


Lesenswert?

wird wohl eine (sortiert)? liste mit den 1,15 Mio. FIles anlegen

(hast schon findfirst/findnext probiert, das wäre "üblicher")

von Peter II (Gast)


Lesenswert?

Joachim Drechsel schrieb:
> k, es sind ca 1,15 Mio Files aber was macht das da
> so ewig ?

er liest glaube ich von jeder Datei die eigenschaften aus.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Wäre mal einen Versuch wert. Den Windows-Explorer hauts komplett
raus. Ich vermute auch, opendir() baut erst eine Liste auf. Im
Taskmanager war aber von einem dann zu vermutenden üppigen
Speicherverbrauch nichts zu sehen ...

Zum Glück läuft das Programm (vermutlich) nur einmal. Altdaten
einlesen halt.

opendir() war mal wieder Gewohnheit ;)

Mich würde nur mal interessieren was opendir() so alles aufruft
bis es im Win32 API landet. Ich kann mir schon vorstellen, es ist
im Emdeffekt das gleiche wie bei findfirst() (das gab es doch schon
als DOS-Call direkt ?).

von Peter II (Gast)


Lesenswert?

Joachim Drechsel schrieb:
> Mich würde nur mal interessieren was opendir() so alles aufruft
> bis es im Win32 API landet.

einfach filemon mitlaufen lassen und schon wüstest du es.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Ich meine die Aufrufe in der Lib.

von (prx) A. K. (prx)


Lesenswert?

opendir entstammt dem Unix/Posix API und solcher Lib-Code versucht 
folglich, sich diesem API entsprechend zu verhalten. In Windows kann es 
bedeuten, dass es bei riesigen Directories ineffizient arbeitet.

Woher kommt diese opendir Funktion denn überhaupt?

von Peter II (Gast)


Lesenswert?

Joachim Drechsel schrieb:
> Ich meine die Aufrufe in der Lib.

diese werden aber auf api aufrufe an BS umgesetzt und sehr viele davon 
sieht du im filemon.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

opendir() ist eine Libraryfunktion des Watcom C.

Ich suche mal nach filemon, anscheinend hat MS da etwas neues ...

von Peter II (Gast)


Lesenswert?

> Ich suche mal nach filemon, anscheinend hat MS da etwas neues ...
keien ahnung ob man filemon noch downloaden kann, das neu ist der 
procmon dieser ist aber irgendwie langsam bei beenden vom trace.

von (prx) A. K. (prx)


Lesenswert?

Joachim Drechsel schrieb:
> Ok, es sind ca 1,15 Mio Files

Eine flache Directory mit derart vielen Files ist nicht wirklich 
angenehm zu verwenden. Das dürfte dir mittlerweile auch aufgefallen 
sein.

Besonders fies wird es allerdings, wenn die Filenamen nicht in 
8.3-Format passen und das Filesystem in alter Tradition zusätzliche 
8.3-kompatible Filenamen anlegt.

von Peter II (Gast)


Lesenswert?

A. K. schrieb:
> Besonders fies wird es allerdings, wenn die Filenamen nicht in
> 8.3-Format passen und das Filesystem in alter Tradition zusätzliche
> 8.3-kompatible Filenamen anlegt.

NTFS macht das aber im standard nicht. Und auf Fat32 passen so viele 
Datein gar nicht daruf. Also gibt es diese Problem gar nicht.

von Peter II (Gast)


Lesenswert?

Peter II schrieb:
> A. K. schrieb:
>> Besonders fies wird es allerdings, wenn die Filenamen nicht in
>> 8.3-Format passen und das Filesystem in alter Tradition zusätzliche
>> 8.3-kompatible Filenamen anlegt.
>
> NTFS macht das aber im standard nicht. Und auf Fat32 passen so viele
> Datein gar nicht daruf. Also gibt es diese Problem gar nicht.

sorry, es ist sogar andersrum. Im Standard wird noch 8.3 geschrieben - 
leider ru spät nachgelesen.

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

A. K. schrieb:
> Eine flache Directory mit derart vielen Files ist nicht wirklich
> angenehm zu verwenden. Das dürfte dir mittlerweile auch aufgefallen
> sein.

Es war nicht meine Idee :-)))

von Reinhard Kern (Gast)


Lesenswert?

Joachim Drechsel schrieb:
> Es war nicht meine Idee :-)))

Alter Novell-Server? Da hat man das gern so gemacht, es wurde sogar 
herausgestellt, dass Novell mit irre vielen Dateien besonders gut 
zurechtkam, geholfen hat es nicht.

Gruss Reinhard

von Joachim D. (Firma: JDCC) (scheppertreiber)


Lesenswert?

Mein letztes war NetWare 4.11. Nie Probleme. Bis auf NLMs mit
Ausgabe auf den Bildschirm: Einmal über den Rand und CRASH ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.