Schneller Dateien verarbeiten??

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Beitrag von cxAlex »

Ich würde stat PeekX() mit Pointern arbeiten, das ist theortisch noch ne Spur schneller.
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Benutzeravatar
Tafkadasom2k5
Beiträge: 1578
Registriert: 13.08.2005 14:31
Kontaktdaten:

Beitrag von Tafkadasom2k5 »

hjbremer hat geschrieben:Dieses Blockweise lesen ist ja gut und schön, aber wir haben 2009
Heutige Rechner haben mindestens 500 MB, meistens 1 GB und Windows XP und der Rest brauchen ca 200-300 MB. Bleibt also genügend über um eine 100 MB Datei in den Speicher zu laden.
Soweit hast du natürlich Recht, aber das Einlesen in den Speicher kann man damit auch sehr gut optimieren.

Warum nun gerade 65536 Bytes zutreffen weiß ich auch nicht genau. Bei Fat16 würde ich das nachvollziehen können, aber bei NTFS weiß ich das auch nicht. Oder gibt es einen Befehl, der eine Datei in den Speicher einließt und dabei autmatisch beürkcsichtigt, was bei dieser HD am schnellsten wäre?

Bei dem Rest gebe ich dir Recht- wenn erstmal im Speicher ist, ist das alles kein großes Problem mehr!
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

cxAlex hat geschrieben:Ich würde stat PeekX() mit Pointern arbeiten, das ist theortisch noch ne Spur schneller.
PeekX() benutzt Pointer. :?
... was du meinst, sind wohl zusätzliche Strukturen, welche direkt auf den
Speicherbereich zeigen sollen. Was da schneller sein soll ist mir zwar
schleierhaft, aber bei PB kann man das ja nie wissen, bevor man nicht den
ASM-Code gesehen hat :lol:

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

PMV hat geschrieben:Was da schneller sein soll ist mir zwar
schleierhaft, aber bei PB kann man das ja nie wissen, bevor man nicht den
ASM-Code gesehen hat :lol:

MFG PMV
Es fällt der Call weg!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Beitrag von hjbremer »

kleines Beispiel was mit zusätzlichen Structuren gemeint ist

Code: Alles auswählen

Procedure FindChar13(*z.Character, ende)

  For *p.Character = *z To ende
   
    If *p\c = 13
       ProcedureReturn *p
    EndIf
    
  Next

ProcedureReturn 0
EndProcedure
Aber strchr_ ist etwas schneller
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag von PMV »

ts-soft hat geschrieben:Es fällt der Call weg!
Stimmt ... das Springen auf die richtige Adresse und das Push und Pop für
die Parameter ... hät ich auch selber drauf kommen können :oops:

@hjbremer
Deine Schleife funktioniert so nur im ASCII Modus. :wink:

Code: Alles auswählen

Procedure FindChar(*Start.CHARACTER, Size.i, ToFind.c) 
  Protected *End = *Start + Size - SizeOf(CHARACTER)
  
  While *Start <= *End
    If *Start\c = ToFind 
       ProcedureReturn *Start 
    EndIf
    *Start + SizeOf(CHARACTER)
  Wend
  ProcedureReturn #False 
EndProcedure
:D

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Beitrag von hjbremer »

gibs noch was anderes ? :mrgreen:
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Antworten