我对 PHP 中的对象比较有疑问。看起来简单的代码实际上运行起来太慢了,我不喜欢这种语言,而且由于我的语言不是那么先进,所以我想要一些关于以下代码的反馈和建议:
class TestTokenGroup {
private $tokens;
...
public static function create($tokens) {
$instance = new static();
$instance->tokens = $tokens;
...
return $instance;
}
public function getTokens() {
return $this->tokens;
}
public static function compare($tokenGroup1, $tokenGroup2) {
$i = 0;
$minLength = min(array(count($tokenGroup1->getTokens()), count($tokenGroup2->getTokens())));
$equalLengths = (count($tokenGroup1->getTokens()) == count($tokenGroup2->getTokens()));
$comparison = strcmp($tokenGroup1->getTokens()[$i], $tokenGroup2->getTokens()[$i]);
while ($comparison == 0) {
$i++;
if (($i == $minLength) && ($equalLengths == true)) {
return 0;
}
$comparison = strcmp($tokenGroup1->getTokens()[$i], $tokenGroup2->getTokens()[$i]);
}
$result = $comparison;
if ($result < 0)
return -1;
elseif ($result > 0)
return 1;
else
return 0;
}
...
}
在上面的代码$tokens
中只是一个简单的字符串数组。
使用上述方法处理由大约 40k 个对象组成usort()
的数组需要大约 2 秒。TestTokenGroup
有没有加快速度的明智方法?这里的瓶颈在哪里?
编辑:添加了我最初忘记包含的 getTokens() 方法。