为什么在PHP中对数组进行排序这么慢?

时间:2015-09-24 09:40:34

标签: php arrays performance sorting nlp

我实现了一个试图检测语料库中停用词的类。当然,所述课程中的一种方法是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;

}

问题是,这个功能很慢:需要超过5分钟来完成相对较小的4 006令牌数组。

起初,我认为我错误地实现了算法(我甚至用array_key_exists替换了所有isset)。但经过进一步检查后发现,arsort电话占据了执行时间的大部分时间。

为了帮助减轻负载,我在SORT_NUMERIC函数中添加了arsort标志,但是徒劳无功。

首先,排序这样一个数组是否占用了所有时间是否正常? 其次,最重要的是,我能做些什么才能让事情变得更顺畅?

0 个答案:

没有答案