array_merge foreach

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

IT Infrastructuur Developer

IT Infrastructuur Developer Ben jij (bijna) klaar met je HBO studie in de richting van IT? Opzoek naar een spannende eerste baan, waar je ontzettend veel kan leren? Dan hebben wij de ultieme job voor jou! Voor een goede klant van ons in de financiële dienstverlening zijn wij opzoek naar een Junior Infrastructure Developer. Deze baan is een mooie kans om een sterke start te geven aan jouw carrière binnen de IT! De job Je werkt nauw samen met het Devops team, en zal je voornamelijk bezighouden met het automatiseren van infrastructure componenten. De componenten worden opgevraagd door het DevOps

Bekijk vacature »

Medior Java developer

Wat je gaat doen: Of beter nog, wat wil jij doen? Binnen DPA GEOS zijn we dan ook op zoek naar enthousiaste Java developers om ons development team te versterken. Als Java developer werk je in Agile/Scrum teams bij onze klanten en daarbij kun je eventueel ook andere ontwikkelaars begeleiden in het softwareontwikkelproces. Verder draag je positief bij aan de teamgeest binnen een projectteam en je kijkt verder dan je eigen rol. Je gaat software maken voor verschillende opdrachtgevers in jouw regio. Je bent een professional die het IT-vak serieus neemt en kwaliteit levert. Je leert snel vanwege je diepgaande

Bekijk vacature »

Technical Asset Specialist Substations

TenneT is growing fast to realize its strategic ambitions. We play a leading role in driving the energy transition. We are looking for a passionate Technical Asset Specialist for substations (onshore and offshore) at our location in Arnhem who will contribute to this and that might be you? Your contribution to TenneT We are searching for a motivated and engaged colleague as a technical asset specialist (onshore and offshore) for instrument transformers and surge arresters, with preferably a strong background in the area of insulation coordination. As a specialist for insulation coordination you are responsible for overarching topics regarding insultation

Bekijk vacature »

.Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

Als PHP developer bijdragen aan beter onderwijs?

Functie Momenteel zijn ze op zoek naar een PHP developer die mee gaat werken aan de (door)ontwikkeling van de producten en zo helpt aan de uitvoering van hun ontwikkelprojecten. Je komt te werken binnen hun development team bestaande uit 6 ontwikkelaars. Ze staan zowel open voor meer junior als medior/senior developers. Je kunt snel veel verantwoordelijkheid krijgen en doorgroeien binnen het bedrijf. Bovendien ben je betrokken bij het bepalen van de product roadmap en de inbreng van (nieuwe) technologieën. De applicaties waaraan je werk worden gebruikt op onderwijsinstellingen door heel Nederland. De tech-stack bestaat voornamelijk uit Laravel (PHP), Vue.js en

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Oracle APEX developer

Wat je gaat doen: Als Oracle APEX ontwikkelaar bij DPA werk je samen met collega’s aan de meest interessante opdrachten. Je zult je ervaring met SQL, PL/SQL, JavaScript, HTML en CSS inzetten om wensen van opdrachtgevers te vertalen naar technische oplossingen. Je werk is heel afwisselend, omdat DPA zich niet beperkt tot een specifieke branche. Zo ben je de ene keer bezig binnen de zorgsector, de andere keer is dit bij de overheid. Wat we vragen: Klinkt goed? Voor deze functie breng je het volgende mee: Je hebt een hbo- of universitaire opleiding afgerond Je hebt 2 tot 5 jaar

Bekijk vacature »

Developer Full Stack

Functie omschrijving Full Stack Developer gezocht! Wij zijn op zoek naar een Full Stack Developer voor een bedrijf in de regio Nijkerk. Je maakt in deze functie onderdeel uit van een groeiend team met een goede ambitie waarbij eenheid, betrokken en overtreffen de belangrijkste kernwaardes zijn. Het bedrijf werkt volgens de AGILE/SCRUM methode, wat je o.a. terug vindt in de tweewekelijkse sprints, retrospectives en een daily standup. Je takenpakket bestaat uit: Bijdragen aan het door ontwikkelen, onderhouden en optimaliseren van een Saas applicatie; Bijdragen aan de innovatie van het bedrijf en hun klanten; Het ontwikkelen op de laatste technologie van

Bekijk vacature »

Front-End Developer

Als Front-End Developer bij Coolblue verbeter je de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Wat doe je als Front-End Developer bij Coolblue? Als Front-end Developer werk je aan de gebruiksvriendelijkheid van onze webshop voor miljoenen klanten. Je vindt het leuk om samen te werken met de UX designer om stories op te pakken. Je krijgt energie van het bedenken van creatieve oplossingen en presenteert dit graag binnen het team. Daarnaast ben je trots op je werk en verwelkomt alle feedback. Ook Front-end Developer worden bij Coolblue? Lees hieronder of het bij je past. Dit vind je leuk om te

Bekijk vacature »

Full Stack C#.NET developer

Functieomschrijving Wij zijn op zoek naar een gepassioneerde Full Stack C#.NET Software Developer. Als Software Developer ben je verantwoordelijk voor het ontwikkelen van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Je werkt samen met andere ontwikkelaars en engineers om de sensoren in machines uit te lezen en deze data om te zetten in management informatie voor jullie klanten. Taken en verantwoordelijkheden: Ontwikkelen en onderhouden van webapplicaties, apps en dashboards voor de eigen IOT-oplossingen. Testen en valideren van de ontwikkelde software. Actief deelnemen aan code reviews en bijdragen aan het verbeteren van de kwaliteit van de software. Je gaat aan

Bekijk vacature »

.NET Developer gezocht!

Functie omschrijving Wij zijn op zoek naar een .NET Developer! Wil jij werken voor een internationaal bedrijf waar je legio mogelijkheden krijgt als Software Ontwikkelaar? Grijp nu je kans en kijk snel of jouw vaardigheden aansluiten bij onderstaand profiel! Je kunt een uitdagende rol gaan vervullen als .NET Developer binnen een internationaal bedrijf dat gevestigd is in omgeving Bergen. Dit bedrijf is zeer vooruitstrevend en verricht betekenisvol werk. Binnen dit bedrijf wordt gewerkt aan de productie en ontwikkeling van medische middelen. Als .NET Developer ga jij je bezig houden met het volgende: Je wordt betrokken bij alle fasen van software

Bekijk vacature »

Back-end developer (Magento2)

Functie E-commerce is een ‘’snelle’’ wereld. Om hierin continu voorop te blijven omarmen ze in een vroeg stadium nieuwe technieken. Een webshop is nooit af en kan altijd beter, sneller en efficiënter. Tegelijkertijd hebben ze vanaf hun oprichting altijd vastgehouden aan kwaliteit boven snelheid, en dit loont. Als back-end developer fungeer je als het verlengstuk van hun klanten. Technisch complexe zaken pak je met liefde op, en hierin werk je samen met o.a. front-end developers en designers. Klanten verwacht hierin kwaliteit van het hoogste niveau en een proactieve, meedenkende rol bij het maken van zowel technische als strategische keuzes. Ga

Bekijk vacature »

Magento2 Developer

Functie Ben jij een ontwikkelaar en wil jij een volgende stap zetten en als teamlead aan de slag? Lees dan snel verder! Voor een gewilde opdrachtgever in omgeving Delft zijn wij op zoek naar een programmeur die als meewerkend voorman aan de slag wilt gaan. Een developer die een team van twee man aan zal sturen. Jouw werkzaamheden zullen er als volgt uitzien; Ontwikkelen en ontwerpen van API's; Maatwerkoplossingen; Databeveiliging; Optimalisatie webshops; Ontwikkelen technische implementaties voor verbetering database; Aanspreekpunt voor de organisatie en verantwoordelijk voor de aansturing van externe developers. Zoek je veel uitdaging en veelzijdigheid in je werk dan

Bekijk vacature »

PHP ontwikkelaar

Functie Met een complex en uitgebreid e-commerce platform, een eigen PIM-systeem en eigen scan applicatie – krijg jij dagelijks te zien hoe jouw werk gebruikt wordt door miljoenen gebruikers. En we staan qua development pas in de startblokken, aangezien er nog meerdere projecten op de plank liggen te wachten! Ons huidige development team bestaat uit 8 programmeurs. Er wordt dagelijks gereflecteerd op geschreven code, Scrum taken en kennisdelen onderling is een must. Onze voertaal binnen ons team is Engels, dit omdat wij twee internationale collega’s hebben. Ons huidige “IT Landschap” bestaat voornamelijk uit allerlei losse onderdelen die individueel, maar ook

Bekijk vacature »

.NET Developer Shared Driving

Bedrijfsomschrijving Onze klant richt zich op het toegankelijker maken van steden, een fantastisch mooi streven. Hoe ze dat doen? Met eigen ontwikkelde software, waarmee vervoersmiddelen gedeeld kunnen worden. Deze inspirerende werkgever maakt een maatschappelijke impact en dat doen ze nu al zo'n 25 jaar! Het bedrijf is gevestigd in het centrum van Rotterdam en kent ongeveer zo'n 90 medewerkers. Het personeel is lekker gewoon gebleven! Iedereen kleedt zich zoals hij of zij dat zou willen en de sfeer is er erg fijn. Een leuke werkgever om voor te werken, en bovendien zijn er voor jou als Software Developer veel mooie

Bekijk vacature »
Ozzie PHP

Ozzie PHP

25/03/2013 11:55:33
Quote Anchor link
Opmerkelijk, ik was even aan het benchmarken wat sneller was:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
foreach ($foo as $key => $value) $this->foo[$key] = $value;
?>

of

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$this
->foo = array_merge($this->foo, $foo);
?>

In eerste instantie was de foreach loop sneller. Echter, naarmate ik de $foo array ging uitbreiden, werd de array_merge optie sneller!

Iemand hier een verklaring voor?
 
PHP hulp

PHP hulp

28/11/2024 03:53:27
 
Ward van der Put
Moderator

Ward van der Put

25/03/2013 14:19:12
Quote Anchor link
Volgens mij vind je het antwoord deels hierin:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$arrayEen
= array(1, 2, 3);
$arrayTwee = array('a', 'b', 'c');

$arrayNieuw = array_merge($arrayEen, $arrayTwee);
print_r($arrayNieuw);

$arrayOmgekeerd = array_merge($arrayTwee, $arrayEen);
print_r($arrayOmgekeerd);
?>

array_merge() voert niet echt een merge uit, maar meer een append. De tweede array wordt gewoon aan de eerste geplakt.
 
Ozzie PHP

Ozzie PHP

25/03/2013 14:33:01
Quote Anchor link
Oké, maar hoe verklaart dat dan waarom in eerste instantie foreach sneller is, maar naarmate de array groter wordt array_merge sneller wordt?
 
Wouter J

Wouter J

25/03/2013 16:30:50
Quote Anchor link
Daarvoor zou ik eerst willen weten of dat komt omdat de loop (relatief) trager is geworden of dat de array_merge (relatief) sneller is geworden. Dan kun je eens in de PHP source code kijken of je iets kan vinden wat dit gedrag verklaard.
 
Ozzie PHP

Ozzie PHP

25/03/2013 16:35:22
Quote Anchor link
Uhm... eh, ja... ik heb eerlijk gezegd geen idee waar ik nu moet kijken Wouter :-s
En als ik al weet waar ik moet kijken, waar moet ik dan op letten?
 
Wouter J

Wouter J

25/03/2013 16:59:19
Quote Anchor link
Vertel eerst maar eens wat het is. Is foreach trager of array_merge sneller geworden?
 
Ward van der Put
Moderator

Ward van der Put

25/03/2013 17:06:34
Quote Anchor link
Ik was al aan het testen en daar blijkt Wouter een punt te hebben: wat testen we nu eigenlijk?

Een array met "maar" drie waarden kan anders presteren als dat "zomaar" de drie episoden van de "Lord of the Rings"-trilogie in HD zijn...
 
Ozzie PHP

Ozzie PHP

25/03/2013 17:36:39
Quote Anchor link
Ik had m'n testje al weer weggegooid, maar ik heb even een nieuwe gemaakt. Eerst de code en daaronder de resultaten. Optie 1 en 3 zijn een foreach loop met een kleine en grote array. Optie 2 en 4 zijn array_merge met een kleine en grote array. Zoals je ziet is van optie 1 en 2 de foreach loop sneller. Van optie 3 en 4 is echter array_merge sneller.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
function test() {

    $loops = 500;

    $time_1 = microtime(true);
    for ($i = 1; $i <= $loops; $i++) {
        // OPTIE 1:
        $array_a = array();
        $array_b = array(1, 2, 3);
        foreach ($array_b as $key => $value) {
            $array_a[$key] = $value;
        }
    }

    $time_2 = microtime(true);
    for ($i = 1; $i <= $loops; $i++) {
        // OPTIE 2:
        $array_a = array();
        $array_b = array(1, 2, 3);
        array_merge($array_a, $array_b);
    }

    $time_3 = microtime(true);
    for ($i = 1; $i <= $loops; $i++) {
        // OPTIE 3:
        $array_a = array();
        $array_b = array(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3);
        foreach ($array_b as $key => $value) {
            $array_a[$key] = $value;
        }
    }

    $time_4 = microtime(true);
    for ($i = 1; $i <= $loops; $i++) {
        // OPTIE 4:
        $array_a = array();
        $array_b = array(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3);
        array_merge($array_a, $array_b);
    }

    $time_5 = microtime(true);
    echo 'Aantal loops: ' . $loops . '<br>';
    echo '<br>';
    echo 'OPTIE 1 (foreach): ' . number_format($time_2 - $time_1, 5, ',', '.') . '<br>';
    echo 'OPTIE 2 (arrmerg): ' . number_format($time_3 - $time_2, 5, ',', '.') . '<br>';
    echo 'OPTIE 3 (foreach): ' . number_format($time_4 - $time_3, 5, ',', '.') . '<br>';
    echo 'OPTIE 4 (arrmerg): ' . number_format($time_5 - $time_4, 5, ',', '.') . '<br><br>';
}


test();
test();
test();
?>

En de uitslag:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Aantal loops: 500

OPTIE 1 (foreach): 0,00138
OPTIE 2 (arrmerg): 0,00155
OPTIE 3 (foreach): 0,01514
OPTIE 4 (arrmerg): 0,01105

Aantal loops: 500

OPTIE 1 (foreach): 0,00141
OPTIE 2 (arrmerg): 0,00153
OPTIE 3 (foreach): 0,01504
OPTIE 4 (arrmerg): 0,01106

Aantal loops: 500

OPTIE 1 (foreach): 0,00140
OPTIE 2 (arrmerg): 0,00154
OPTIE 3 (foreach): 0,01505
OPTIE 4 (arrmerg): 0,01099

Is het zo duidelijker?
 
Wouter J

Wouter J

25/03/2013 17:37:24
Quote Anchor link
Je moet array A natuurlijk ook veranderen

Toevoeging op 25/03/2013 17:37:59:

Je moet array A natuurlijk ook veranderen
 
Ozzie PHP

Ozzie PHP

25/03/2013 17:38:44
Quote Anchor link
Hoe bedoel je?
 
Ward van der Put
Moderator

Ward van der Put

25/03/2013 17:41:20
Quote Anchor link
Array A is leeg:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$array_a
= array();
?>
 
Ozzie PHP

Ozzie PHP

25/03/2013 17:46:23
Quote Anchor link
Oh oke, ik heb array a nu bij alle opties gevuld met a, b en c:
$array_a = array('a', 'b', 'c');

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Aantal loops: 500

OPTIE 1 (foreach): 0,00153
OPTIE 2 (arrmerg): 0,00236
OPTIE 3 (foreach): 0,01527
OPTIE 4 (arrmerg): 0,01181

Aantal loops: 500

OPTIE 1 (foreach): 0,00150
OPTIE 2 (arrmerg): 0,00236
OPTIE 3 (foreach): 0,01523
OPTIE 4 (arrmerg): 0,01182

Aantal loops: 500

OPTIE 1 (foreach): 0,00153
OPTIE 2 (arrmerg): 0,00237
OPTIE 3 (foreach): 0,01525
OPTIE 4 (arrmerg): 0,01187
 
Wouter J

Wouter J

25/03/2013 18:59:14
Quote Anchor link
Even een wat uitgebreider testje gedraaid:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
TEST          DURATION    MEMORY USAGE
------------  ----------  ------------

foreach (0)   0.046953ms  524288
merge (0)     0.057942ms  0
foreach (3)   0.061938ms  262144
merge (3)     0.061938ms  786432
foreach (20)  0.080919ms  524288
merge (20)    0.081918ms  262144


Elke test is 1000x uitgevoerd. Het getal achter de test naam is het aantal elementen in beide arrays. De foreach test is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach ($b as $d) {
    $a[] = $b;
}

?>

En de merge test is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$a
= array_merge($a, $b);
?>


Opmerkelijk is dat bij 3 elementen beide manieren hetzelfde werken (de test 3 keer uitgevoerd en 3x hetzelfde getal).
Ook leuk om op te merken is dat wanneer de loop 2 lege arrays krijgt, hij alsnog memory verspilt, de array_merge functie doet dit niet.
Wat ook wel opmerkelijk is dat hij in PHP 5.4.3 CLI mode nooit sneller is dan de foreach.
 
Ozzie PHP

Ozzie PHP

25/03/2013 19:57:48
Quote Anchor link
Euh... wat doe je hier nou? Klopt niet helemaal toch? :)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach ($b as $d) {
    $a[] = $b;
}

?>
 
Wouter J

Wouter J

25/03/2013 20:10:17
Quote Anchor link
Quote:
Euh... wat doe je hier nou? Klopt niet helemaal toch? :)

Nee, klopt (ik bedoel, hij klopt niet), typfoutje op het forum.
Gewijzigd op 25/03/2013 20:10:59 door Wouter J
 
Ozzie PHP

Ozzie PHP

25/03/2013 20:18:24
Quote Anchor link
Maar mijn conclusie klopt toch? Bij kleine array foreach sneller, bij grote array array_merge sneller. Hoe kan dat dan?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.