我有一个奇怪的问题。在用 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?
}
}