1
我有一個奇怪的問題。在用NYTProf分析我的代碼幾次之後。我有一段緩慢的代碼,看起來應該是非常快的?NYTProf顯示在if語句上調用DBI :: st :: fetch?
if($my_var){
# spent 112s making 25764253 calls to DBI::st::fetch, avg 4µs/call
用這條線走187sec跑? 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?
}
}
我最後的陳述其實不是if語句嗎? – Smartelf
@Smartelf它可能適用於最後執行的語句,而不是句法上的最後一個語句。 – Schwern