shadowano Skrevet 24. februar 2010 Del Skrevet 24. februar 2010 Hei Jeg har flere en-dim arrayer på ca 500 items hver. Hver av array'ene kan inneholde en del like verdier, så jeg trenger å sammenligne dem, og de verdiene som ikke ligger i begge merger jeg til total-arrayet. Dette gjør jeg x antall ganger i et forsøk på å samle flest mulig unike brukere. Prosesseringen er litt tung og jeg lurer på om det er en mer lur måte å gjøre det samme på. Under er koden jeg benytter $TotalMembers = GetOneDimArrMembersName($members2); for($i=0; $i< 3; $i++) { $compare2 = GetOneDimArrMembersName($compare2); $difference = array_diff($compare2, $TotalMembers); $TotalMembers = array_merge($difference, $TotalMembers); } Lenke til kommentar
Jonas Skrevet 24. februar 2010 Del Skrevet 24. februar 2010 array_diff tar flere enn to argumenter. Dersom antall arrays du skal sammenlikne varierer, så tipper jeg du kan bruke call_user_func_array med relativt fin hastighet i forhold til det du har nå. Lenke til kommentar
shadowano Skrevet 1. mai 2010 Forfatter Del Skrevet 1. mai 2010 (endret) array_diff tar flere enn to argumenter. Dersom antall arrays du skal sammenlikne varierer, så tipper jeg du kan bruke call_user_func_array med relativt fin hastighet i forhold til det du har nå. Takk for svar. Hvis jeg forstod riktig så implementerte jeg følgende: $args[0] = $CompareMembers; $args[1] = $TotalCompareMembers; $difference = call_user_func_array('array_diff', $args); Dette tok lengre tid enn å kalle array_diff på vanlig vis. Snittiden til array_diff: 0,00144838 Snittiden ved å bruke call_user_func_array: 0,009550989 Kjørte da 12 gjennomkjøringer Edit: Testen jeg gjorde var ikke bra nok. Nye tider på 20 gjennomkjøringer: Snittiden til array_diff: 0,016426881 Snittiden ved å bruke call_user_func_array: 0,017324924 Men fremdeles raskere med vanlig array_diff. Endret 1. mai 2010 av martin82 Lenke til kommentar
Jonas Skrevet 2. mai 2010 Del Skrevet 2. mai 2010 Nå har jeg riktig nok kommet relativt beduggen hjem, men jeg tror jeg ser en vesentlig feil i koden din. Funksjonen call_user_func_array er noe man vanligvis bare bruker dersom man har et dynamisk antall argumenter til en funksjon. Du sender konstant to argumenter, ergo er det fullstendig bortkastet å i det hele tatt tenke på call_user_func_array. Anbefaler deg å titte litt på dokumentasjonen, og spesielt eventuelle eksempler. (Skal samtidig nevnes at når jeg selv leser dokumentasjonen, så virker det ikke helt som array_diff egentlig gjør det man skulle forvente i henhold til normal og standard setteori. Hvorvidt det stemmer eller ikke får være opp til noen andre å teste, fordi jeg gidder virkelig ikkewpjejgi nå.) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå