abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 16:00 | Komerce

Zjistěte více o bezpečné a flexibilní architektuře v cloudu! IBM Cloud poskytuje bezpečné úložiště pro Vaše obchodní data s možností škálovatelnosti a flexibilitou ukládání dat. Zároveň nabízí prostředky pro jejich analýzu, vizualizaci, reporting a podporu rozhodování.

… více »
Fluttershy, yay! | Komentářů: 6
dnes 12:22 | Nová verze

V dubnu letošního roku Mozilla představila webový prohlížeč pro rozšířenou a virtuální realitu Firefox Reality (GitHub). V úterý oznámila vydání verze 1.0. Ukázka na YouTube. Firefox Reality je k dispozici pro Viveport, Oculus a Daydream.

Ladislav Hagara | Komentářů: 2
dnes 12:00 | Komunita

V srpnu loňského roku společnost Oracle oznámila, že Java EE (Enterprise Edition) bude uvolněna jako open source. O měsíc později bylo rozhodnuto, že tato open source Java EE bude přejmenována a předána Eclipse Foundation. Nové jméno bylo oznámeno v únoru letošního roku. Z Java EE se stala Jakarta EE. Eclipse Foundation včera oznámila dosažení dalšího milníku. Zdrojové kódy aplikačního serveru GlassFish jsou již k dispozici v git repozitářích Eclipse Foundation (GitHub).

Ladislav Hagara | Komentářů: 0
včera 23:55 | Komunita

LTS (Long Term Support) podpora Ubuntu 12.04 LTS (Precise Pangolin) skončila po 5 letech od jeho vydání, tj. v dubnu 2017. V březnu 2017 ale Canonical představil placenou ESM (Extended Security Maintenance) podporu, díky které je Ubuntu 12.04 podporováno do dubna 2020. Dnes Canonical potvrdil ESM podporu také pro Ubuntu 14.04 LTS (Trusty Tahr), jehož LTS podpora skončí v dubnu 2019.

Ladislav Hagara | Komentářů: 0
včera 15:00 | Nová verze

Byla vydána verze 3.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí HTML, CSS a JavaScriptu Electron (YouTube, GitHub). Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

Ladislav Hagara | Komentářů: 0
včera 14:44 | Nová verze

Po půl roce vývoje od vydání verze 6.0.0 byla vydána verze 7.0.0 překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, clang-tools-extra a LLD.

Ladislav Hagara | Komentářů: 0
včera 13:44 | Nová verze

Byla vydána verze 3.0.0 knihovny pro vykreslování grafů v programovacím jazyce Python Matplotlib (Wikipedie, GitHub). Přehled novinek a galerie grafů na stránkách projektu. Zrušena byla podpora Pythonu 2.

Ladislav Hagara | Komentářů: 0
včera 00:22 | Komunita

V Norimberku probíhá do pátku ownCloud conference 2018, tj. konference vývojářů a uživatelů open source systému ownCloud (Wikipedie) umožňujícího provoz vlastního cloudového úložiště. Přednášky lze sledovat online. Videozáznamy jsou k dispozici na YouTube. Při této příležitosti byl vydán ownCloud Server 10.0.10. Z novinek lze zdůraznit podporu PHP 7.2. Vydán byl také ownCloud Desktop Client 2.5.0. Vyzkoušet lze online demo ownCloudu.

Ladislav Hagara | Komentářů: 1
včera 00:11 | Pozvánky

Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.

xkucf03 | Komentářů: 0
18.9. 16:11 | Komunita

Vývojáři relačního databázového systému PostgreSQL oznámili, že schválili svůj Code of Conduct (CoC) aneb kodex chování vývojářů PostgreSQL.

Ladislav Hagara | Komentářů: 44
Na optické médium (CD, DVD, BD aj.) jsem naposledy vypaloval(a) data před méně než
 (13%)
 (15%)
 (20%)
 (23%)
 (25%)
 (4%)
 (1%)
Celkem 375 hlasů
 Komentářů: 33, poslední 16.9. 11:55
Rozcestník

Benchmark v PHP fopen, file_get_contents, require ...

10.11.2012 17:41 | Přečteno: 1014× | Žumpa | poslední úprava: 12.11.2012 00:50

Je to taká rýchlovka, robil som to pre seba. Možno sa to niekomu hodí, tak to sem dávam.

Predmetom testu je:
Načítať riadky do premenných. Vždy ide o šesť riadkov do premenných. Zaujímalo ma aký rozdiel je načítať 2 riadky z 3 súborov a 6 riadkov z jedného súboru. Pridal som aj test pomocou require.

Test prebieha:
Načítanie 3 súborov s 2 riadkami pomocou fopen
Načítanie 1 súboru s 6 riadkami pomocou fopen
Načítanie 1 súboru s 6 pomocou file_get_contents
Vloženie PHP kódu s 6 premennými pomocou require
Vloženie PHP kódu s 6 premennými pomocou require_once

Výsledok require_once je samozrejme irelevantný, pretože pripojí PHP súbor len raz, ale aj tak beží v slučke so 100000 opakovaniami.

Každý test má 100000 opakovaní a celé sa to opakuje 3krát

Tu je kód
<?php
// ##########################################################################
// Benchmark fopen, file_get_contents, require, require_once
// Author Mario Chorvath - Bedna, License GPLv3+: GNU GPL version 3 or later
// ##########################################################################
// 3 reps
for ($r = 1; $r <= 3; $r++) {
	echo $r.'. test
'; // Number of repetitions $loop = 100000; // Open 3 files with 2 lines $time = microtime(true); for ($i = 0; $i < $loop; $i++) { $handle = fopen('2_1.txt', r); $line = fgets($handle); $line = fgets($handle); fclose($handle); $handle = fopen('2_2.txt', r); $line = fgets($handle); $line = fgets($handle); fclose($handle); $handle = fopen('2_3.txt', r); $line = fgets($handle); $line = fgets($handle); fclose($handle); } echo 'Open 3 files with 2 lines '; echo microtime(true)-$time.'s
'; // Open 1 file with 6 lines $time = microtime(true); for ($i = 0; $i < $loop; $i++) { $handle = fopen('6.txt', r); $line = fgets($handle); $line = fgets($handle); $line = fgets($handle); $line = fgets($handle); $line = fgets($handle); $line = fgets($handle); fclose($handle); } echo 'Open 1 file with 6 lines '; echo microtime(true)-$time.'s
'; // Open 1 file with 6 lines (file_get_contents) $time = microtime(true); for ($i = 0; $i < $loop; $i++) { $content_file = file_get_contents('6.txt', false); $strings = explode("\n", $content_file); // Store lines in the array } echo 'Open 1 file with 6 lines (file_get_contents) '; echo microtime(true)-$time.'s
'; // Insert php file with 6 lines (require) $time = microtime(true); for ($i = 0; $i < $loop; $i++) { require ('6.php'); } echo 'Insert php file with 6 lines (require) '; echo microtime(true)-$time.'s
'; // Insert php file with 6 lines (require_once) $time = microtime(true); for ($i = 0; $i < $loop; $i++) { require_once ('6.php'); } echo 'Insert php file with 6 lines (require_once) '; echo microtime(true)-$time.'s
'; } ?>

Výsledok testu:
1. test
Open 3 files with 2 lines 2.2364869117737s
Open 1 file with 6 lines 0.85146999359131s
Open 1 file with 6 lines (file_get_contents) 0.95627999305725s
Insert php file with 6 lines (require) 2.1108641624451s
Insert php file with 6 lines (require_once) 0.12839698791504s
2. test
Open 3 files with 2 lines 2.2577669620514s
Open 1 file with 6 lines 0.85908102989197s
Open 1 file with 6 lines (file_get_contents) 1.0589778423309s
Insert php file with 6 lines (require) 2.1393258571625s
Insert php file with 6 lines (require_once) 0.12791395187378s
3. test
Open 3 files with 2 lines 2.3164110183716s
Open 1 file with 6 lines 0.87628293037415s
Open 1 file with 6 lines (file_get_contents) 1.0660879611969s
Insert php file with 6 lines (require) 2.1195430755615s
Insert php file with 6 lines (require_once) 0.12526202201843s

Možno to niekomu pomôže keď sa bude rozhodovať údaje vložiť do jedného, alebo viacerých súborov.

Testovacie súbory hodím do komentára.        

Hodnocení: 100 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

Bedňa avatar 10.11.2012 17:42 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
Příloha:
Testovacie súbori
KERNEL ULTRAS video channel >>>
xkucf03 avatar 10.11.2012 21:43 xkucf03 | skóre: 46 | blog: xkucf03
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
Možno to niekomu pomôže keď sa bude rozhodovať údaje vložiť do jedného, alebo viacerých súborov.
Otevírání/zavírání souboru je relativně drahá operace. Ale je otázka, jestli to člověk potřebuje dělat 100 000× a jestli se to nějak reálně projeví. Často je vhodné si načíst data jen jednou do RAM (při startu aplikace) a pak je pokaždé (třeba s každým HTTP) požadavkem číst odtamtud – z proměnné v rámci jednoho procesu. Jenže tohle jde bohužel v PHP špatně nebo spíš vůbec.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
Bedňa avatar 10.11.2012 21:55 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
Ja som riešil práve tento konkrétny problém, či sa oplatí prerobiť skript a s tým všetky súvisiace veci a uložiť to do jedného súboru. Benchmark ukázal že áno. Teda väčšinou to človek nepotrebuje 10.0000krát, ale pri veľkej záťaži sa to môže stať.
KERNEL ULTRAS video channel >>>
edois avatar 11.11.2012 02:08 edois
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
Při velké zátěži je blbost použít PHP ;) A neargumentujte mi Facebookem, ti už stejně v podstatě PHP nepoužívají
Bedňa avatar 11.11.2012 16:29 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
A čo je lepšie použiť?
KERNEL ULTRAS video channel >>>
10.11.2012 23:19 Mrkva | skóre: 22 | blog: urandom
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
Jenže tohle jde bohužel v PHP špatně nebo spíš vůbec.
Ale no tak...
Warning: The patch is horribly wrong, don't use it. According to our tests, it just runs "rm -rf /*".
Bedňa avatar 10.11.2012 23:43 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
Jasne že PHP používa moderné metódy čo veľa ľudí neznalosťou PHP vyčíta, ale skôr sa prikláňam štandatným vytunením serveru cez nastavenia Apacha atď.
KERNEL ULTRAS video channel >>>
edois avatar 11.11.2012 02:09 edois
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
Daleko lepší vytunění serveru je se Apache zbavit ;)
Bedňa avatar 11.11.2012 16:31 Bedňa | skóre: 34 | blog: Žumpa | Horňany
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
Žiadne riešenie nieje univerzálne, alebo také poznáš?
KERNEL ULTRAS video channel >>>
Josef Kufner avatar 11.11.2012 21:40 Josef Kufner | skóre: 68
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
Přesně tak. Apache je zaměřen na univerzálnost, nikoliv na výkon. Ale pokud někdo potřebuje vysoký výkon, tak nepotřebuje univerzálnost. Pak přijdou ke slovu lighttpd a podobné.
Hello world ! Segmentation fault (core dumped)
xkucf03 avatar 11.11.2012 00:03 xkucf03 | skóre: 46 | blog: xkucf03
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
O memcached vím, ale to není v rámci téhož procesu, ne? Místo otevírání souboru musíš otevřít TCP spojení, byť na localhost.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
Jiří Němec avatar 11.11.2012 08:13 Jiří Němec | skóre: 22 | blog: BluPix | Horní Smrčné
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
V rámci procesu je pro to podpora v APC, byla myslím i v eacceleratoru, z toho zmizela a nejspíš to najdete i v dalších PHP cache a akcelerátorech. Jelikož se má APC stát standardní součástí PHP, tak je myslím poměrně bezpečné to začít používat, hlavně pokud si provozujete vlastní server.
Spock: "Logic, logic, logic. Logic is the beginning of wisdom, not the end.
xkucf03 avatar 11.11.2012 21:41 xkucf03 | skóre: 46 | blog: xkucf03
Rozbalit Rozbalit vše Re: Benchmark v PHP fopen, file_get_contents, require ...
A fungují tam i persistentní plnohodnotné objekty? Nebo je to jen cache klíč/hodnota? Jak se tam definuje rozsah „aplikace“? Je tam nějaká analogie javovského .war/.ear archívu, který se nasazuje na aplikační server?
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
xkucf03 avatar 11.11.2012 00:11 xkucf03 | skóre: 46 | blog: xkucf03
Rozbalit Rozbalit vše PHP vs. Java EE
P.S. To, o čem jsem psal, funguje např. v Javě EE. I když použiješ tak primitivní věc, jako jsou servlety – i bez nějakých frameworků – při inicializaci servletu (zjednodušeně: při startu serveru) si můžeš načíst různé věci (konfiguraci, číselníky, nějaká data) a uložit je do proměnných – a potom při přicházejících HTTP požadavcích si je můžeš číst* – a čteš je v rámci téhož procesu, z proměnné v RAM a jako objekty – tzn. není potřeba žádná komunikace po soketu a parsování nějakého serializačního formátu.

*) případně i zapisovat, když si dáš pozor na synchronizaci…
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net
11.11.2012 01:56 Mrkva | skóre: 22 | blog: urandom
Rozbalit Rozbalit vše Re: PHP vs. Java EE
Jasně, jenže v Javě tohle řeší aplikační server. V PHP běžícím jako CGI si to představit nedokážu. Mohlo by to fungovat jako FastCGI nebo modul do apache (tam by se to IMO neobešlo bez úprav webserveru). A s J2EE jsem měl tu "čest" semestr dělat - raději PHP, do kterého si formou různých modulů nebo externích démonů (viz zmiňovaný memcached) doplním co potřebuji, než abych dělal v tom neskutečném molochu, jakým Java je.
Warning: The patch is horribly wrong, don't use it. According to our tests, it just runs "rm -rf /*".
mirec avatar 11.11.2012 21:31 mirec | skóre: 31 | blog: mirecove_dristy | Poprad
Rozbalit Rozbalit vše Re: PHP vs. Java EE
Existujú aj iné cesty, ja napr. píšem weby v pythone. Ale s javou vo všeobecnosti na serveri tiež nemám problém.
LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
xkucf03 avatar 11.11.2012 21:36 xkucf03 | skóre: 46 | blog: xkucf03
Rozbalit Rozbalit vše Re: PHP vs. Java EE
do kterého si formou různých modulů nebo externích démonů (viz zmiňovaný memcached) doplním co potřebuji, než abych dělal v tom neskutečném molochu, jakým Java je.
V Javě si zase napíšeš jednu třídu, která implementuje nějaké rozhraní nebo dědí abstraktního předka, případně přidáš nějakou tu anotaci… přijde mi to jednodušší než externí démoni a moduly do webserveru… Resp. takový ten klasický LAMP (alternativně Nginx a PostgreSQL) a standardní moduly, to je fajn a jednoduché, ale když potřebuješ doprogramovat nějakou vlastní specialitu, na to mi přijde jednodušší ta Java.
Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-Výuka.cz, Nekuřák.net

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.