Visa ett inlägg
Oläst 2014-07-04, 11:20 #15
Alexs avatar
Alex Alex är inte uppkopplad
Administratör
 
Reg.datum: Sep 2004
Inlägg: 1 621
Alex Alex är inte uppkopplad
Administratör
Alexs avatar
 
Reg.datum: Sep 2004
Inlägg: 1 621
Nu har jag testat lite, och fått ner tiden ganska radikalt med ovanstående koncept. Det är fortfarande aningen exponentiellt, men det går mycket snabbare;

http://pastebin.com/S4UvCCs4

Koden ovan är verkligen inte optimal eller snygg. Man kan skippa en eller flera av looparna om man vill. Den är också ganska stökig, men även det går att städa upp. Som koncept duger det tycker jag...

5000 users kan jag matcha till 2398 par på 480-500 ms. 1000 går på 35 ms.

Förslag på förbättringar här hade varit att istället för att loopa grupperingsarrayn, bara ta första användaren
PHP-kod:
$item array_values($searchUsers)[0
är han matchad (ta bort honom)
PHP-kod:
unset($searchUsers[$topKey][$item['UserID']]); 
eller är han nuvarande userid, gå på nästa.

Anledningen till att $this->matched ligger kvar är för att den första initiala loopen i metoden match() kör det första subsettet av users, man skulle kunna bryta den loopen och börja om när man har fått en match, men jag tror det blir mindre effektivt faktiskt.
__________________
@Zn4rK - Börja blogga - Paintball i Göteborg
Det jag skriver är mina personliga åsikter och återspeglar inte vad WN eller andra företag jag representerar tycker.
Alex är inte uppkopplad   Svara med citatSvara med citat