SpeedTest: FileSize() vs. GetFileSize()

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

SpeedTest: FileSize() vs. GetFileSize()

Beitrag von Agent »

Ist es euch auch schon aufgefallen, wie langsam FileSize() ist???
Ich hab über Readir mal einiges einlesen lassen und immer die Größe mit FileSize() ermitteln lassen *gääähn*

Danach hab ich das ganze direkt über directoryentrysize() gemacht. Extrem schneller. Hier die Procedure dafür:

Code: Alles auswählen

Procedure GetFileSize(file$)
  If ExamineDirectory(#PB_Any,"",file$)
    NextDirectoryEntry()
    ProcedureReturn DirectoryEntrySize()
  Else
    ProcedureReturn -1
  EndIf
EndProcedure

...testet selbst.
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

sollte es nicht "Procedure.l" sein?
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Warum? Wenn hinter Procedure nichts steht, dann wird es automatisch
als procedure.l angesehen. Soweit ich weiß... <_<
Bild
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

MVXA hat geschrieben:Warum? Wenn hinter Procedure nichts steht, dann wird es automatisch
als procedure.l angesehen. Soweit ich weiß... <_<
PB-Hilfe hat geschrieben:Eine Prozedur kann wenn nötig ein Ergebnis (Variable, String) zurückliefern. Sie müssen in diesem Fall nach Procedure den Typ (.Typ) festlegen und das ProcedureReturn Schlüsselwort an einem beliebigen Punkt innerhalb der Prozedur aufrufen. Ein Aufruf von ProcedureReturn verlässt umgehend die Prozedur, auch wenn er innerhalb einer Schleife erfolgt.
Benutzeravatar
Deeem2031
Beiträge: 1232
Registriert: 29.08.2004 00:16
Wohnort: Vorm Computer
Kontaktdaten:

Beitrag von Deeem2031 »

Und wer sagt dir das die Hilfe 100%ig richtig ist..?
Bild
[url=irc://irc.freenode.org/##purebasic.de]irc://irc.freenode.org/##purebasic.de[/url]
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Code: Alles auswählen

Procedure Funk(lngA.l, lngB.l)
    ProcedureReturn lngA + lngB
EndProcedure

Debug Funk(5, 5)
Irgendwelche Fragen?

noch n kleiner Edit:
> Und wer sagt dir das die Hilfe 100%ig richtig ist..?
Wie ungern ich dir widerspreche aber es muss hier halt mal sein. Die
hat eigentlich für gewöhnlich hier immer Recht. Allerdings ist das bei der
PB Hilfe aus irgendeinem Grund nicht immer der Fall (Andre? Ach ja, der
ist in Urlaub..). Z.b. können beim Network Event "Datei empfangen" die
Dateien auch mit ReceiveNetworkData ausgelesen werden. Das wird in
der Hilfe ebenfalls nicht erwähnt.
Bild
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

hardfalcon hat geschrieben:
MVXA hat geschrieben:Warum? Wenn hinter Procedure nichts steht, dann wird es automatisch
als procedure.l angesehen. Soweit ich weiß... <_<
PB-Hilfe hat geschrieben:Eine Prozedur kann wenn nötig ein Ergebnis (Variable, String) zurückliefern. Sie müssen in diesem Fall nach Procedure den Typ (.Typ) festlegen und das ProcedureReturn Schlüsselwort an einem beliebigen Punkt innerhalb der Prozedur aufrufen. Ein Aufruf von ProcedureReturn verlässt umgehend die Prozedur, auch wenn er innerhalb einer Schleife erfolgt.
Genau wie bei den Variablen wird auch bei den Funktionen als Standard-Rückgabetyp Long genommen :allright:
Benutzeravatar
hardfalcon
Beiträge: 3447
Registriert: 29.08.2004 20:46

Beitrag von hardfalcon »

Das mag ja alles sein, aber schaut euch mal an, was hier pasiert:

Code: Alles auswählen

Procedure test()
  ProcedureReturn "Dies ist ein STRING"
EndProcedure
Debug test()
Führt den Code mal aus... /:->
Benutzeravatar
Green Snake
Beiträge: 1394
Registriert: 22.02.2005 19:08

Beitrag von Green Snake »

klar, du nimmst ja auch strings.
aber der standard is nunmal long ;)
-.-"
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

Ich finds gut, dass die Hilfe hier nicht 100% stimmt. Ist nur positiv für den
Coding-Style (Rückgabetyp muss in fast jeder anderen Sprache angegeben
werden).

Weiter so Andre! :wink:
Antworten