Door
Jelle -
op 01-12-2011 10:45
gewijzigd op 01-12-2011 11:06
4.805 views
Beste mensen,
In het kader van nutteloze bezigheden ging ik maar eens de database van opentaal inlezen (160k woorden) en daarvan de woordwaarde bepalen (scrabble).
Het punt is, dat bepalen duurt lang, heel lang.
Ik heb al een beetje gekeken hoe efficiënt ik kon krijgen maar het moet nog efficiënter kunnen.
<?php
$letterwaarde = array(
'A' => 1,
'b' => 3); //voor alle letters in het alfabet
$t = microtime(true);
while($line = $q->fetch()){
$array = str_split(strtolower($line['woord']));
$int = 0;
foreach($array as $v){
if(array_key_exists($v,$letterwaarde)){ //kunnen ook rare tekens in zitten
$int += $letterwaarde[$v];
}
}
//update doen in database
}
echo microtime(true) - $t;
?>
Aantal dingen die ik al geprobeerd heb:
-while ipv de foreach (met sizeOf() voor de while)
-ipv de if(array_key_exists()) een @ voor de $letterwaarde[$v]
-letterverschuivingen in de array
Hmm 40 seconden voor de hele boel, was een beetje scheef bezig, was vergeten dat er een fulltext index stond op de woorden :) en dan gaan updates niet zo bijster snel.