Performance NYTProf显示正在if语句上调用DBI::st::fetch?

Performance NYTProf显示正在if语句上调用DBI::st::fetch?,performance,perl,dbi,Performance,Perl,Dbi,我有个奇怪的问题。在使用NYTProf多次分析我的代码之后。我有一段很慢的代码,看起来应该很快 if($my_var){ # spent 112s making 25764253 calls to DBI::st::fetch, avg 4µs/call 线路运行需要187秒?if语句中的代码确实使用绑定变量,但$my_var不是其中之一。即使这是为什么 专业文件管理器是不是只是有问题,还接了别的东西?此声明包含在 while($sth->fetch) 循环,但在这两个语句之间有一些代

我有个奇怪的问题。在使用NYTProf多次分析我的代码之后。我有一段很慢的代码,看起来应该很快

if($my_var){
# spent 112s making 25764253 calls to DBI::st::fetch, avg 4µs/call
线路运行需要187秒?if语句中的代码确实使用绑定变量,但$my_var不是其中之一。即使这是为什么

专业文件管理器是不是只是有问题,还接了别的东西?此声明包含在

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?
    }
}
已知错误:


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

我的最后一条语句实际上不是if语句?@Smartelf它可能适用于执行的最后一条语句,而不是语法上的最后一条语句。