array_merge foreach

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »

Software ontwikkelaar ASP .Net / C#

Functie omschrijving Gezocht! Software ontwikkelaar. Ben jij bekend met termen als ASP .Net, C# en SQL? Ben jij op zoek naar een afwisselende en uitdagende IT-functie binnen de agrarische sector? En omschrijf jij jezelf als zelfstandig, enthousiast en proactief? Dan hebben wij de perfecte functie voor jou! Als Software ontwikkelaar binnen deze organisatie ben je samen met één andere collega verantwoordelijk voor de ontwikkeling en modificatie van het support en controle programma dat binnen dit bedrijf gebruikt wordt. Je gaat hierbij bijdragen aan de vertaling van klantwensen naar effectieve softwareoplossingen. Verder bestaan je werkzaamheden uit: Technische uitwerking van de business

Bekijk vacature »

Front End Ontwikkelaar (React)

In het kort Als front end developer ga je aan de slag met maatwerkprojecten voor onze klanten. Denk bijvoorbeeld aan het toevoegen van een machine aan een database of het corrigeren van formulieren voor ingestuurde orders. Voorbeeld van zo’n project is Smart Link. De projecten waar je op ingezet kunt worden liggen binnen het technische domein waar jij als front end developer een grote rol speelt om samen met je back end collega’s de juiste oplossingen te leveren. please note that this particular role requires fluent Dutch language skills. Dit vind je leuk om te doen Het omzetten van designs

Bekijk vacature »

Senior Product Developer

Functieomschrijving Als senior Product Developer ben je verantwoordelijk voor bestaande mobiliteitsproducten en de ontwikkeling van nieuwe mobiliteitsconcepten. Met behulp van diverse klantonderzoeken, klantsessies en salesmeetings zorg je ervoor dat je de veranderende mobiliteitsbehoeften in de markt kent. Hier speel je op in door innovatieve, flexibele, efficiënte en duurzame vervoersoplossingen te bedenken, te ontwikkelen, te implementeren en uiteindelijk samen met Sales en Marketing collega’s in de markt te zetten. Je initieert en neemt deel aan (internationale en afdeling overschrijdende) projecten, vaak in de rol van projectleider. In die rol bewaak je de voortgang, coördineer je de activiteiten en zorg je voor

Bekijk vacature »

Frontend Developer - Leeuwarden

Als Frontend Developer bouw jij mee aan het onderwijs van de toekomst! In een scrum team werken met jonge en enthousiaste collega’s, moderne technieken, ruimte voor eigen ontwikkeling en op een proactieve wijze kunnen meewerken aan innovatie binnen het onderwijs. Magister is het state-of-the-art softwarepakket dat scholen in het voortgezet onderwijs op alle fronten ontzorgt. Van leerlingenadministratie tot het ondersteunen van individuele leerlijnen, van toegang tot digitaal lesmateriaal tot het plannen van het lesrooster. In de Magister app bedient Magister ruim 2,5 miljoen gebruikers waarvan, dagelijks meer dan 600.000 unieke. Hiermee is Magister de absolute marktleider in onderwijsland. Wat vragen

Bekijk vacature »

Java Front-end Developer

Dit ga je doen Ontwikkelen van nieuwe functionaliteiten in Java met tools als Springboot, MS SQL Server (T-SQL) en JavaScript; Het onderhouden van de (web-)applicaties binnen een complexe omgeving; Werken aan de migratie van een monolithisch systeem naar een architectuur gebaseerd op Kubernetes; Code reviews met collega's en actieve kennisuitdelingsessies voeren; Het uitvoeren van unit- en systeemtests Experimenteren met nieuwe tools en technieken. Hier ga je werken Binnen deze organisatie kom je te werken op de afdeling die gegevens verzamelt vanuit het hele land. Denk hierbij aan vertrouwelijke persoonsgegevens. Het team verwerkt al deze data met als doel het waarborgen

Bekijk vacature »

Database developer - SQL

Functie omschrijving Kan jij goed overweg met complexe algoritmes en het schrijven van procedures in T-SQL? Heb jij al wat ervaring opgedaan met SQL en vind je het tijd voor de volgende stap? Lees dan snel verder! Dit software bedrijf, gespecialiseerd in de ontwikkeling van logistieke software, is op zoek naar een ervaren SQL database developer. Jouw werkzaamheden zullen onder andere bestaan uit: Je sluit aan bij meetings en brengt het gehele logistieke proces in kaart. Vervolgens ga je als lead developer aan de slag om de klus te klaren. Je stuurt het junior developer team en helpt, zo nodig,

Bekijk vacature »

.NET Developer te Naarden

Bedrijfsomschrijving Voor mijn klant ben ik op zoek naar een .NET Developer om het huidige team te komen versterken. Deze organisatie bevindt zich in de logistieke sector, en zij hebben een eigen ERP systeem ontwikkeld dat zij inzetten ter optimalisatie van de logistieke processen van haar eindklanten. Deze organisatie bestaat inmiddels al ruim 20 jaar, waarbij zij een duidelijke missie hebben, namelijk: het werk van de eindklant makkelijker maken door de systemen die zij leveren. Ze werken over heel de wereld, wat deze organisatie een echte internationale speler maakt. Binnen de organisatie kenmerken ze zich door een dynamische en professionele

Bekijk vacature »

Low-Code Expert/Developer: Power Platform Speciali

Bedrijfsomschrijving Als Low-Code Expert/Developer bij ons innovatieve bedrijf, neem je een cruciale rol op je in de creatie, ondersteuning en implementatie van diverse oplossingen met behulp van het veelzijdige Power Platform. Dit platform omvat Power Apps, Power BI, Power Automate, Power Virtual Agent en Azure Logic Apps. Het Power Platform biedt je de mogelijkheid om klanten te voorzien van naadloze integraties door op maat gemaakte oplossingen te creëren die compatibel zijn met (bijna) alle bestaande software-infrastructuren. Dankzij het uitgebreide scala aan toepassingen, krijg je de kans om als architect en projectleider van je eigen oplossing te fungeren. Dompel jezelf onder

Bekijk vacature »

Junior PHP Developer

Je maakt een vliegende start van je carrière, door meteen mee te bouwen aan de digitale aspecten van Coolblue. Wat doe je als Junior PHP Developer bij Coolblue? Als Junior PHP Developer ben je meteen vanaf de start onderdeel van een development team. Je kijkt veel mee met collega’s en volgt trainingen om te groeien als Junior Developer. Op dat moment komt je wil om steeds te blijven leren naar boven. Daarnaast pak je in de sprints ook je eigen stories op om Coolblue iedere dag een beetje beter te kunnen maken. Je sterk analytisch vermogen komt dan ook goed

Bekijk vacature »

Junior Software Developer (HBO / WO)

Functie omschrijving Wij zijn op zoek naar een Junior Software Developer! Sta jij aan het begin van je carrière en heb je net je HBO of WO-diploma in de richting van ICT of Techniek mogen ontvangen? En heb jij grote affiniteit met software development? Dan hebben wij bij Jelling IT Professionals de perfecte opdrachtgever in de omgeving van Utrecht, die jou tot een volwaardig Fullstack Software Developer gaat opleiden. Binnen deze grote organisatie krijg je ruime en professionele trainingen die jouw in korte tijd vakbekwaam maken. Niet alleen het aan technisch aspect, maar ook zeker jouw persoonlijke ontwikkeling wordt veel

Bekijk vacature »

SQL Database developer

Functie omschrijving Wil jij meewerken aan het creëren van slimme software om magazijnen als een geoliede machine te laten lopen? Wij zoeken een zorgvuldig persoon, iemand die niet snel de hand omdraait voor complexe algoritmes. Denk jij dat jij de SQL ontwikkelaar bent die wij zoeken? Lees snel verder en wie weet zitten we binnenkort samen aan tafel! Jouw werkzaamheden zullen er als volgt uitzien: Je houdt je bezig met het ontwerpen en ontwikkelen van MS SQL server databases, dit doe je met T-SQL als programmeer laag. Je gaat aan high-end software oplossingen werken, dit doe je voor de optimalisatie

Bekijk vacature »

Traineeship Fullstack developer (WO, 0 tot 3 jaar

Functie Zoals beschreven ga je vanaf start aan de slag bij een passende opdrachtgever, hierbij kijken ze echt naar jouw wensen, kennis/ervaring maar ook de reisafstand. Momenteel hebben ze meerdere klanten waarbij ze groepen hebben opgezet wat maakt dat er diverse uitdagende kansen liggen. Naast het werken bij de opdrachtgever, en het volgen van de masterclasses, zul je regelmatig met de andere trainees in contact zijn. Niet alleen op professioneel vlak maar juist ook bij de borrels en kwartaaluitjes! Kortom; een jaar lang hard aan jezelf werken in combinatie met gezelligheid en plezier. Spreek dit jou aan? Dan komen we

Bekijk vacature »

Python developer Consultancy

Functie Als Python developer bij deze organisatie werk je voor verschillende klanten. Doordat de oprichter een groot netwerk heeft kun je zelf voorkeuren uitspreken in het type projecten dat je wilt gaan doen. Zo zijn er bijvoorbeeld langdurige of juist korte projecten, maar is ook het type klant, of project bespreekbaar. Werk jij bijvoorbeeld graag aan een nieuw, state-of-the-art web portaal of ben je liever betrokken bij een migratietraject van een bestaande applicatie? Wij gaan voor jou aan de slag! Eisen • Je bent een gedreven developer met sterke voorkeur voor Python • Je bent meer dan een codeklopper •

Bekijk vacature »

.NET developer

Functie Jij begint als .NET ontwikkelaar in een team met 10 andere Software Engineers. De werkzaamheden zijn afwisselend, zo kan het dat jij bezig bent met volledig nieuwe features of het door ontwikkelen van bestaande sites of shops. Wij ontwikkelen web applicaties, maar ook mobiele applicaties. Daarnaast bijt jij je soms ook van in externe koppelingen met systemen zoals een ERP. Als team is er een duidelijke focus m.b.t. het waarborgen van de performance en snelheid van webshops. Ook zijn wij expert op het gebied van configuratoren. Kortom enorm veel afwisselende werkzaamheden! Ook jouw werkplek kan afwisselend zijn. Soms heb

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

08/01/2025 17:14:13
 
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.