PHP
array_filter($data, function($row) { return substr($row, 0, 1) === "a"; });
Kolleksiýalar
$data->filter(function($row) { return substr($row, 0, 1) === "a"; });
PHP
array_search(function($row) { return substr($row, 0, 1) === "a"; }, $data);
Kolleksiýalar
$data->search(function($row) { return substr($row, 0, 1) === "a"; });
PHP
array_map(function($row) { return "test"; }, $data);
Kolleksiýalar
$data->map(function($row) { return "test"; });
PHP
sort($data);
Kolleksiýalar
$data->sort();
PHP
foreach($loop as $item) { $doSomething = true; }
Kolleksiýalar
$data->each(function($row) { return "test"; });
PHP
array_reduce($data, function($carry, $row) { return $carry + strlen($row); });
Kolleksiýalar
$data->reduce(function($carry, $row) { return $carry + strlen($row); });
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.
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.
========== 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 =======================
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.
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.
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
!