paint-brush
Kolleksiýalary we PHP massiwlerini ýagtylandyryňtarapyndan@halexmorph
Täze taryh

Kolleksiýalary we PHP massiwlerini ýagtylandyryň

tarapyndan Jacob Landry6m2024/10/25
Read on Terminal Reader

Örän uzyn; Okamak

“Laravel” kolleksiýalary çylşyrymly massiw gezelençlerini alyp, olary okamak we düşünmek üçin aňsatlaşdyrýar. Koduňyzy has düşnükli dil bilen ýazmagyň ähmiýetini düşündirmek gaty aňsat, ýöne endik edeniňizden soň, başga bir zadyň kabul edilip bilinjekdigini göz öňüne getirmek kyn.
featured image - Kolleksiýalary we PHP massiwlerini ýagtylandyryň
Jacob Landry HackerNoon profile picture

Hatigrenýänler elmydama dürli sebäplere görä PHP-ni basýarlar, ýöne iň aňsat nyşanlaryň biri koduň näderejede erbet bolup biljekdigi. Käbir adamlar kod arassalygynyň we “owadanlygyň” möhümdigi bilen ylalaşman bilerler, emma kod kodlaryny uzak möhletleýin saklamak barada aýdylanda, okamak aňsat kod bilen toparyňyzy köp wagt tygşytlap bilersiňiz.


“Apple” -de wagtym içerki gyzyklanýan taraplar tarapyndan ulanylýan maliýe programmalarynyň ekosistemasyny döretdim. Theyllaryň dowamynda umumy tehniki hyzmat ýa-da gowulandyrmalara kömek etmek üçin gurallara täze işläp düzüjileri yzygiderli münýärdim. Şol döwürdäki iň möhüm meseleleriň biri, koduňyzy tebigy dil bilen okamagyň nähili möhümdigi.


Kodlaryň köpüsiniň şeýle bir görnüşde ýazylandygyny görmek gyzykly, onuň ep-esli bölegini okamaly, nämäniň bolup geçýändigine doly düşünmek üçin başlangyç yza gaýdyp gelmeli. Kod ýazýan wagtyňyzda has täsirli dil ýa-da API-ler ulanmak, täze işläp düzüjileriň uçuş we uçuş wagtyny ep-esli azaldyp biler.


Kolleksiýalar şöhle saçýar. “Laravel” kolleksiýalary çylşyrymly massiw gezelençlerini alyp, olary okamak we düşünmek üçin aňsatlaşdyrýar. Koduňyz “Bu massiwi diňe a bilen başlaýan sözlere süzüň, soňra çykdajylaryň hataryna karta ediň we iň soňunda ähli çykdajylaryň jemine çenli azaldyň” ýaly okalýan buýruklar zynjyryna öwrülýär. Koduňyzy has täsirli dil bilen ýazmagyň ähmiýetini düşündirmek gaty aňsat, ýöne endik edeniňizden soň, başga bir zadyň nädip kabul edilip bilinjekdigini göz öňüne getirmek kyn.


Elbetde, okamak mümkinçiligi ýerine ýetirişiň hasabyna gelip bilmeýär, şonuň üçin elmydama dogry saýlaýandygymyzy we diňe zerur bolan ýerlerde okalmagy ileri tutýandygymyzy üpjün etmek möhümdir. Sahnanyň aňyrsynda nämeleriň bolup geçýändigine hemişe düşünmelidiris we çözgütlerimize çemeleşişimizde haýsy söwda söwdasy bilen ýüzbe-ýüz bolýandygymyzy doly bilmelidiris. Az okalýan çözgütden doly sekunt gerek bolsa, kodumyzyň okalmagy gowy däl.


Geliň, PHP massiwlerine we kolleksiýalaryna içgin seredeliň we ikisiniň arasyndaky öndürijiligi deňeşdireliň.

Laravel kolleksiýalary

“Laravel” kolleksiýalaryny ulanmagyň iň uly artykmaçlyklaryndan biri, zynjyr usullaryna mümkinçilik berýän erkin sintaksisdir. Bu arassa we okalýan kody döredýär, sebäbi wagtlaýyn üýtgeýjilere ýa-da çylşyrymly öýjükli çagyryşlara mätäç bolmazdan yzygiderli birnäçe amallary ýerine ýetirip bilersiňiz.


PHP-iň kolleksiýalar bilen deňeşdirilişini gaty ýönekeý mysalda görmek üçin aşakda köp ulanylýan massiw manipulýasiýa funksiýalaryny deňeşdireliň.

Süzgüç

PHP

 array_filter($data, function($row) { return substr($row, 0, 1) === "a"; });


Kolleksiýalar

 $data->filter(function($row) { return substr($row, 0, 1) === "a"; });

Gözlemek

PHP

 array_search(function($row) { return substr($row, 0, 1) === "a"; }, $data);


Kolleksiýalar

 $data->search(function($row) { return substr($row, 0, 1) === "a"; });

Karta

PHP

 array_map(function($row) { return "test"; }, $data);


Kolleksiýalar

 $data->map(function($row) { return "test"; });

Sort

PHP

 sort($data);


Kolleksiýalar

 $data->sort();

Her biri

PHP

 foreach($loop as $item) { $doSomething = true; }


Kolleksiýalar

 $data->each(function($row) { return "test"; });

Azaltmak

PHP

 array_reduce($data, function($carry, $row) { return $carry + strlen($row); });


Kolleksiýalar

 $data->reduce(function($carry, $row) { return $carry + strlen($row); });

Bölün

PHP

 array_splice($data, count($data)/2);


Kolleksiýalar

 $data->splice(count($data)/2);


Hemmesi bilelikde (PHP)

 $data = array_filter($data, function($row) { return substr($row, 0, 1) === "a"; }); $data = array_search(function($row) { return substr($row, 0, 1) === "a"; }, $data); $data = array_map(function($row) { return "test"; }, $data); sort($data); foreach($loop as $item) { $doSomething = true; } $sum = array_reduce($data, function($carry, $row) { return $carry + strlen($row); });


Hemmesi bilelikde (ýygyndylar)

 $sum = $data->filter(function($row) { return substr($row, 0, 1) === "a"; })->search(function($row) { return substr($row, 0, 1) === "a"; })->map(function($row) { return "test"; })->sort() ->each(function($row) { return "test"; })->reduce(function($carry, $row) { return $carry + strlen($row); });


Deňeşdirme

Bu ýönekeý çemeleşme bilen, her bir aýratyn funksiýa üçin okalmakda uly söwda bolup görünmeýär, ýogsa-da olaryň hemmesiniň bir massiwde ulanylmagynyň zerurdygyny göz öňünde tutsaňyz, munuň has köpdügini görüp bilersiňiz. ýygyndyda zynjyrly usullary ulananyňyzda gysga we okamak has aňsat.


Üýtgeýjiňizi yzygiderli ýazyp, soňunda çykyş üçin täze üýtgeýjini bellemegiň ýerine, islenýän netijä gelýänçäk, her buýrugy zynjyrlap bileris. Kodlar näçe çylşyrymly bolsa, kolleksiýalary okamak has aňsat.

Çykyş

Aboveokardaky mysallary aldym we kolleksiýalaryň adaty PHP funksiýalaryndan has az ýerine ýetirilendigini ýa-da ýokdugyny anyklamak üçin käbir synag maglumatlary döretdim.


Her bir massiwde 100,000 tötänleýin setir bar, men her funksiýany 100 gezek işledim. Netijede, jogap beriş wagtlarynyň hemmesini ortaça hasapladyk.


Jemleýji netijeler aşakda:

 ========== Tests Complete (ms) ========== php filter: 5.07 collect filter: 6.49 ======================= php search: 0.79 collect search: 0 ======================= php map: 3.45 collect map: 4.18 ======================= php sort: 25.27 collect sort: 11.18 ======================= php each: 1.03 collect each: 6.96 ======================= php reduce: 2.78 collect reduce: 7.75 ======================= php splice: 1 collect splice: 0.74 =======================

Netije

Görşüňiz ýaly, Kolleksiýalardan köp mukdarda okalsa-da, käbir möhüm ugurlarda ep-esli öndürijilik ýitirilýär.


Filtr , Karta , Foreach we azaltmak adaty PHP funksiýalary bilen has çalt. Foreach we Reduction hakykatdanam ajaýyp ähmiýetli tapawutlar. Gözleg , tertiplemek we bölmek kolleksiýalary ýeňiji hökmünde görkezýär we Sort aslynda köp wagt tygşytlaýjydyr.


Her kolleksiýany gurlan massiwden döretmeli bolmagyňyzy bellemelidiris, kolleksiýany başlamak üçin birazajyk goşant goşýar, ýöne az mukdarda goşmaça iş we wagt bilen hem netijeler bolýar gaty düşnükli.


Meniň pikirimçe (we bu netijelere esaslanan pikirdir), öndürijilik uly alada döredýän bolsa, Foreach aýlawlary üçin adaty PHP funksiýasyna ýapyşaryn we islendik azaltmak zerurlygy üçin birmeňzeş bolmagy mümkin. Uly maglumat bazalarynda haýsydyr bir tertipleşdirmeli bolsaňyz, kolleksiýalar dogry ýol. Galanlary şeýle bir ýakyn welin, hakykatdanam şahsy isleg ýaly duýulýar.


Şonda kolleksiýalary okamak we goldamak elmydama aňsat diýýärin.


Elbetde, bu maglumatlary almaly we özüňe habarly karar bermeli, ýöne, meniň ýaly bolsaň, ýokardaky bu funksiýalaryň köpüsi üçin kolleksiýalary ýitirip başlarsyň öýdýärin. Iöne meniň pikirimçe →each ulanmaga jaň ederin we appropriate öňe gidýän ýerinde →reduce !

L O A D I N G
. . . comments & more!

About Author

Jacob Landry HackerNoon profile picture
Jacob Landry@halexmorph
Senior Software Engineer On an exciting journey to learn new things all the time.

HANG TAGS

BU madda öňe sürüldi...