[php] code optimalisatie (files inlezen), what to do?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Situatie: Bij een page request dien ik meerdere tekstbestanden in te lezen. In ieder tekstbestand staan diverse blokken code (A-blokken) die op elkaar lijken, maar toch verschillen. Die verschillen dienen eruit te worden gefilterd. Het is van belang dat de code enorm geoptimaliseerd wordt, want in de toekomst gaan zeer veel bestanden tegelijk worden ingelezen. Iedere parse-winst is dus van belang.
Mijn oplossing: Momenteel lees ik de bestanden in met fopen i.c.m. feof en fgets. Ieder A-blok wordt als object in een array gezet. Het A-blok object bevat tevens de originele tekstlijnen (als array) als property. Als alle A-blok objecten aangemaakt zijn gaat de parent class alle informatie filteren. Dit wordt gedaan door per A-blok door haar tekstlijnen te itereren en er een aantal methods op los te laten (een aantal methods werkt met substr en subpos, een aantal noodgedwongen met preg_match (al dan niet voorafgegaan aan een pre-selectie met een stringfunctie, om te voorkomen dat onnodig op iedere lijn een reguliere expressie wordt losgelaten).
De vraag: Ziet iemand mogelijkheden om dit efficiënter aan te pakken? Wellicht zit ik volledig op het verkeerde spoor, alhoewel de preformance zo slecht nog niet is op het moment :)

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 11:46

TeeDee

CQB 241

Verwijderd schreef op vrijdag 03 juli 2009 @ 16:01:
De vraag: Ziet iemand mogelijkheden om dit efficiënter aan te pakken? Wellicht zit ik volledig op het verkeerde spoor, alhoewel de preformance zo slecht nog niet is op het moment :)
Het hele proces dient dus onder de loep genomen te worden?

- Zorgen dat de tekstbestanden in hapklare brokken aangeleverd worden
- Indien mogelijk; cache

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 10:15

Janoz

Moderator Devschuur®

!litemod

Misschien is het handiger wanneer js, ipv de gekozen oplossing, juist iets meer verteld over wat je nu eigenlijk wilt. Zonder te weten wat er nu precies verwacht wordt is het heel lastig te achterhalen of je een verkeerd spoor genomen hebt.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Database gebruiken ipv textbestanden?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Of je vraagt wat Het Grote Idee is (zie Janoz), of je zegt "meten=weten, ga maar profilen". In het wildeweg over cachen of databases beginnen heeft echt geen enkele nut. :z

Dus mijn steentje:
Waarom wil je dit doen? Heb je al gemeten wat je bottleneck is? ;)

{signature}


Acties:
  • 0 Henk 'm!

Verwijderd

Sowieso ontkom je er toch niet aan dat onderwater elke byte gelezen wordt.

Als de opzet van het bestand altijd hetzelfde is (dus blokken in dezelfde volgorde en grootte), maakt het natuurlijk makkelijker om in te lezen.
Ik weet niet in hoeverre het mogelijk is met php dmv fread in één keer een compleet blok in te lezen en deserializeren naar een object. Ik vergelijk php miss teveel met c... Dan ga je er sowieso ook vanuit dat alle bestanden 'compleet' zijn, niet dat je aan het einde nog een half blok overhoud, anders ontkom je echt niet aan feof/fgets.

Acties:
  • 0 Henk 'm!

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Verwijderd schreef op zaterdag 04 juli 2009 @ 09:17:
Sowieso ontkom je er toch niet aan dat onderwater elke byte gelezen wordt.
Dat zal sowieso eenmalig nodig zijn, maar als bijvoorbeeld dezelfde bestanden meerdere malen vergeleken moeten worden, dan kan het opslaan van bepaalde meta-informatie voorkomen dat je telkens opnieuw alle bestanden volledig in moet lezen.

Maar, zoals Janoz en Voutloos al aangeven, een en ander hangt nogal af van het exacte doel. En, @topicstarter, wat is een A-blok?

Wie trösten wir uns, die Mörder aller Mörder?


Acties:
  • 0 Henk 'm!

Verwijderd

Confusion schreef op zaterdag 04 juli 2009 @ 09:45:
Maar, zoals Janoz en Voutloos al aangeven, een en ander hangt nogal af van het exacte doel. En, @topicstarter, wat is een A-blok?
Dankjewel, ik zat me al af te vragen of ik de enige was die dat niet snapte.

@TS, wat voor blokken zijn dat? Ook in PHP geschreven? Of iets anders?
Pagina: 1