[C++] processing van data files > 4 GB

Pagina: 1
Acties:

  • jaapstobbe
  • Registratie: September 2002
  • Laatst online: 17:36
Hallo, ik moet op een aantal files van +- 10Gig een preprocessing stap uitvoeren. Het probleem is echter dat ik uiteraard deze files niet in 1 keer mijn geheugen kan laden, en 32 bits niet genoeg is voor de allocatie. Ik heb het opgelost door het in stukjes hakken van de binaire data.

Maar ik wil het graag in 1 stap kunnen doen. Ik kan echter geen goede documentatie vinden om files van deze omvang te lezen, te processen en weer weg te schrijven in c++. Maar ik ben er zeker van dat het bestaat :)

Iemand?

[ Voor 5% gewijzigd door jaapstobbe op 02-01-2007 16:18 ]


  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
je kunt een bestand toch openen voor read + write. Dan lees je je buffer vol, doet wat preprocessing, en schrijft die buffer weer terug. Kan dat niet?

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14:58
Natuurlijk is het wél handig om grote bestanden in stukken te verwerken, maar of dit kan hangt nogal af van wat je er precies wil doen. Waarom wil je zo graag alles in één keer verwerken? Verder neem ik aan dat je op een 32-bits platform werkt, anders zou het memory-mappen van een groot bestand geen problemen moeten geven (en dat lijkt me een heel wat beter plan dan 10 GB inlezen :X).
Ik kan echter geen goede documentatie vinden om files van deze omvang te lezen, te processen en weer weg te schrijven in c++. Maar ik ben er zeker van dat het bestaat :)
Wat het lezen en schrijven betreft: wat lukt er dan niet?

  • jaapstobbe
  • Registratie: September 2002
  • Laatst online: 17:36
ik werk idd op een 32bits platform, en ik wil het bestand heel graag in 1 keer inlezen, omdat het in 20 stukjes hakken + processen heel veel extra tijd met zich meebrengt.

nu hangt de applicatie wanneer ik ene file groter dan 1.2 gig probeer in te laden...

trouwens mijn 32bit windows is wel in staat om gewoon een 8GB iso op te slaan hoor, en winzip weet er ook wel raad mee :)

volgens mij is het een kwestie van ene anatal headers toevoegen, maar ik heb geen idee hoe of wat en al helemaal niet waar ik dat kan vinden

[ Voor 34% gewijzigd door jaapstobbe op 02-01-2007 16:33 ]


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

jaapstobbe schreef op dinsdag 02 januari 2007 @ 16:31:
trouwens mijn 32bit windows is wel in staat om gewoon een 8GB iso op te slaan hoor, en winzip weet er ook wel raad mee :)
Maar die zullen hem nooit helemaal in geheugen kunnen houden :)
Dat is gewoon een beperking van de 32bits x86 processor waar je nu tegenaan loopt :)

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • jaapstobbe
  • Registratie: September 2002
  • Laatst online: 17:36
moto-moi schreef op dinsdag 02 januari 2007 @ 16:35:
[...]

Maar die zullen hem nooit helemaal in geheugen kunnen houden :)
Dat is gewoon een beperking van de 32bits x86 processor waar je nu tegenaan loopt :)
dus het antwoord is - het is onmogelijk?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 01-12 20:19

Gerco

Professional Newbie

Kun je die file niet mbv streams verwerken of moet je ook echt her en der in de file dingen opzoeken? Een file van 10GB helemaal inlezen lijkt me echt een laatste redmiddel, voor als het op een andere manier echt niet kan.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

jaapstobbe schreef op dinsdag 02 januari 2007 @ 16:36:
dus het antwoord is - het is onmogelijk?
Als je 10gig in je geheugen wilt laden wel ja, maar als je het ook redt door steeds brokken te laden en daar je bewerkingen op te doen, blokken weg te schrijven en de rest te lezen, etc., dan is er nog wel hoop voor je probleem :P

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • Fiander
  • Registratie: Februari 2001
  • Laatst online: 28-05 12:35
een beetje meer info zou welkom zijn.

Moet het orginele bestand behouden blijven ?

wat voor soort pre-verweking moet je op de bestanden los laten ?
1)voor elke regel komt er een regel terug ?
2)je doet een soort voor calculatie ( bv: een index aanleggen van woorden, en daarna inpakken ofzo )

Deze sig is een manueel virus!! Als je dit leest heb je het. Mail dit bericht naar iedereen die je kent, en verwijder alle bestanden van je computer.


  • jaapstobbe
  • Registratie: September 2002
  • Laatst online: 17:36
Gerco schreef op dinsdag 02 januari 2007 @ 16:36:
Kun je die file niet mbv streams verwerken of moet je ook echt her en der in de file dingen opzoeken? Een file van 10GB helemaal inlezen lijkt me echt een laatste redmiddel, voor als het op een andere manier echt niet kan.
met een stream zou zeker, kunnen het is een eenmalig process - uitfilteren irrelevante data, en resultaat wegschrijven (van 10 gig naar ongeveer 400 MB) - allemaal op byteniveau

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 14:58
En dat doe je niet, omdat ...?
Pagina: 1