PHP-ban azt hogy tudnám megállapítani még a kód megírása előtt, hogy gyors lesz-e illetve mennyi memóriát fog lefoglalni?
Kipróbáltam, egy egyszerű mysqli kapcsolódásnál az oop verzió győzött 0.4mb előnnyel, viszont egy 3.5mb-os kép felére leméretezése új kép létrehozásával több memóriába került az oop-nek.
Ezt előre hogy tudnám kalkulálni hogy eleve jól/jobban írhassam a kódot, optimalizáltabb legyen?
Linkek illetve konkrét válaszok is érdekelnének, köszönöm.
Pedig jobb válaszokat ne várj.
A kép méreteiből (hossz x szél x bitmélység) ki tudod számolni a memóriaigényt. Az átméretező rutinod nyilván nem foglal sok helyet, de a célképnek is van foglalása, amit szintén a hossz, szél és bitmélység alapján tudsz kiszámolni. (egyébként ha a kép hossza, szélessége a felére lesz méretezve, akkor pont az eredeti memóriaigényének a negyedét fogja elfoglalni) Na meg, tömöríteni is kell a képet. De ilyesmit nem php-val szokás megoldani. Inkább: convert.
Azt talán mondanom sem kell, hogy a memóriafoglalást .bmp formátumban kell számolni. Pontosabban .dib-ben. Ez a device independent bitmap. Header nincs, csak a pixelek és egy pixel jellemzően 3 byte-ot foglal.
Ez csak egy példa volt, az átméretezés. De egyébként oldalra képfeltöltéskor kell a thumbnail készítés, és akár több képé is egyszerre. Ha ezt egyszerre 100 felhasználó csinálja, elviekben már le is terhelődött a szerver. Szóval nem elég a konvertálás.
A lényege a kérdésemnek az lenne, hogy hogyan tudom megállapítani előre, mielőtt megírom a kódot, hogy egy script lefutása mennyi memóriába kerül a szerveren. Annak a technikának szeretnék utánanézni, hogy egy scriptet hogy lehet gyorsra és minél kisebb energiaigényűre megírni.
Már bocs, de a convert egy bináris util, ami egyebek mellett át is tud méretezni, ergo, képes thumbnailek gyártására.
Azt amit szeretnél, elég nehéz script nyelv esetében összehozni, mert az interpreter akár példányosíthatja is magát, stb.
Ezeket az optimalizációkat inkább úgy szokás és sztem úgy is érdemes, hogy szimplán jobbra írod meg. Kevesebb ciklus, kevesebb egymásba ágyazás, egyszerűbb matek, jobb strukturáltság, ha lehet minél kevesebb függvényhívás.
Ja ha csak memo foglalás kell, akkor a script elején lekéred a memófoglalást, tárolod, majd a végén is és kivonod az egyik értéket a másikból.
Azonban ennek a sebességhez nem sok köze lesz.
Sebességméréshez meg vagy tíz példányban megfuttatod a scriptedet és az elején időt kérsz, tempbe rakod, meg a végén is időt kérsz és a tempet kivonod a másik időből.
Arra törekedj, hogy lehetőleg ne nagyon fusson olyan szerviz a tesztidő alatt, ami dinamikusan foglalgat memóriát.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!