Допустим, я хочу отслеживать, сколько раз слово встречается …
//Update the totals
foreach($arrayOfWords as $word) {
$totals[$word] = $totals[$word] + 1;
}
Теперь представьте, что этот маленький блок кода называется СТО раз, каждый раз с сотнями новых слов в $ arrayWords каждый раз, что приводит к миллионам записей внутри связанного массива $ total. Несмотря на простоту операции (добавление 1 к существующему значению), PHP значительно замедляется, когда мы приближаемся к миллионам записей.
Можете ли вы придумать лучший способ подсчета событий (желательно без использования базы данных)?
Вот один из способов ускорить
//Update the totals
foreach($arrayOfWords as $word) {
$totals[$word]++;
}
Нет необходимости дважды искать один и тот же ключ в хэше, просто чтобы увеличить его значение.
Кроме того, (только примечание) я не вижу, как длина $totals
может когда-либо превышать длину $arrayOfWords
, если вы не добавляете слова в $totals
где-то еще в вашем коде.
Объединяя предложения Марк Бейкер а также quickshiftin, следующий код должен быть немного быстрее, если список входных слов содержит много повторяющихся слов:
$counts = array_count_values( $words );
foreach( $counts as $word => $count ) {
$totals[$word] += $count;
}
Тем не менее, в любом случае, PHP, вероятно, не является оптимальным инструментом для такого рода массовой обработки данных. Однако, не зная больше о Зачем Вы хотите сделать это, трудно предложить конкретные альтернативы.