Почему сортировка массива в PHP такая медленная?

Я реализую класс, который пытается обнаружить стоп-слова в корпусе. Один из методов в указанном классе, конечно, idf():

public function idf(){

// 1) In how many articles does each term appear
$tokensFreq = $this->computeTokensFreq();

// 2) Applies the IDF formula (array format : $term => $idf)
$tokensIDF = $this->computeIDF($tokensFreq);

// 3) Sort array so that 'stopwords' (smaller idfs) appear at the top
arsort($tokensIDF);

return $tokensIDF;

}

Проблема в том, что эта функция очень медленная: для прохождения относительно небольшого массива из 4 006 токенов требуется более 5 минут.

Сначала я думал, что неправильно реализовал алгоритм (я даже заменил все array_key_exists с isset). Но после дальнейшей проверки выяснилось, что это arsort Позвоните, кто берет льва часть времени выполнения.

Чтобы уменьшить нагрузку, я добавил SORT_NUMERIC флаг к arsort функционировать, но зря.

Прежде всего, это нормально, что сортировка такого массива занимает все это время?
Во-вторых, и самое главное, что я могу сделать, чтобы все стало гладко?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]