我有一个奇怪的问题。用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)
循环,但是在两个语句之间有一些代码,并且该代码很好。事实上,代码中的所有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?
}
}
答案 0 :(得分:3)
已知错误:
评估while条件所花费的时间可能被错误地归因于while循环的最后一个语句。