1

我有一个奇怪的问题。在用 NYTProf 对我的代码进行了多次分析之后。我有一段缓慢的代码,看起来应该非常快?

if($my_var){
# spent 112s making 25764253 calls to DBI::st::fetch, avg 4µs/call

线路需要 187 秒才能运行?if 语句中的代码确实使用了绑定变量,但 $my_var 不是其中之一。即使是为什么?

pro-filer 只是有问题并捡起其他东西吗?这个语句在一个

while($sth->fetch)

循环,但是在 2 个语句之间有一些代码,并且该代码很好。事实上,代码中的所有 if 语句似乎都慢得不合理?

只是寻找我能得到的任何帮助。我不能发布整个代码。但下面有一些伪代码:

use DBI;
my $dbh = <new mysql connection>;
my $sth = $dbh->prepare('SELECT A, B, C FROM D');
$sth->execute();
$sth->bind_columns(\my($a,$b,$c));
while($sth->fetch){
    #do some fun stuff here.
    my $d = $hash_lookup{$c} // 0;
    if($d){
       #do some more fun stuff here. This is where DBI::st::fetch is apparently being called?
    }
}
4

1 回答 1

3

已知错误:

评估 while 条件所花费的时间可能被错误地归因于 while 循环的最后一条语句。

于 2012-06-21T15:38:08.413 回答