i need the optimized code
Posted: Tue Oct 26, 2004 11:38 am
patrikG | Help us, help you. Please use
patrikG | Help us, help you. Please use
Code: Select all
andCode: Select all
tags where approriate when posting code. Read: [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url][/color]
hi all,
i am a php programmer, i have some problem with this code, i have to optimize this code since it is taking 100% cpu usage by the query written by me. So please suggest me any solution to reduce the cpu utilization.
thanksCode: Select all
$sql="SELECT r1.tlid, r1.fename, fedirp, fedirs, frlong, frlat, tolong, tolat, cfcc, fetype, blockl, blockr, rtsq, long1, lat1, long2, lat2, long3, lat3, long4, lat4, long5, lat5, long6, lat6, long7, lat7, long8, lat8, long9, lat9, long10, lat10 FROM rt1 r1 left join rt2 r2 on r1.tlid = r2.tlid WHERE cfcc='a41' AND (r1.FETYPE='Rd' OR r1.FETYPE='Ave') AND frlat BETWEEN ( $latc - 0.071328571 ) AND ( $latc + 0.071328571 ) AND frlong BETWEEN ( $longc - 0.071328571 ) AND ( $longc + 0.071328571)";
//$sql="SELECT r1.tlid, r1.fename, fedirp, fedirs, frlong, frlat, tolong, tolat, cfcc, fetype, blockl, blockr, rtsq, long1, lat1, long2, lat2, long3, lat3, long4, lat4, long5, lat5, long6, lat6, long7, lat7, long8, lat8, long9, lat9, long10, lat10 FROM rt1 r1 left join rt2 r2 on r1.tlid = r2.tlid WHERE cfcc in ($cfcc2) and ((3958.682)*(acos(sin((frlat)*0.01745) * sin(($latc)*0.01745) + cos((frlat)*0.01745) * cos(($latc)*0.01745) * cos((frlong -( $longc))*0.01745))))<=$mile order by fename";
//old query
$result=$obj1->runsqlreturnrs($sql);
if($CreateLog)
{
fwrite($logFile,"For Drawing Roads Query\n\r");
fwrite($logFile,$sql);
//fwrite($logFile,$sql."\n\r");
}
unset($sql);
$fename1="ss";
$chktlid="";
while($row=mysql_fetch_array($result))
{
//Starting points for a chain
$temparr6[0] = $row['frlong'];
$temparr6[1] = $row['frlat'];
$temparr8 = cord_trans($temparr6,$latc,$longc,$constant,$var);
unset($temparr6);
//Ending points for a chain
$temparr7[0] = $row['tolong'];
$temparr7[1] = $row['tolat'];
$temparr9 = cord_trans($temparr7,$latc,$longc,$constant,$var);
unset($temparr7);
$fename = $row['fename'];
$fetype = $row['fetype'];
$fedirp = $row['fedirp'];
$fedirs = $row['fedirs'];
$cfcc = $row['cfcc'];
//Check Prefix and suffix for the street names.
if (($fedirp!="")&&($fedirs==""))
$Fename = $fedirp." ".$fename." ".$fetype;
elseif (($fedirs!="")&&($fedirp==""))
$Fename = $fename." ".$fetype." ".$fedirs;
elseif (($fedirp=="")&&($fedirs==""))
$Fename = $fename." ".$fetype;
else
$Fename = $fedirp." ".$fename." ".$fetype." ".$fedirs;
unset($Fename);
$Road1 = $FaintGray2;//$Dark;
$Road2 = $Gray2;//$yellow2;
unset($Gray2,$FaintGray2);
if (($constant==350)||($constant==260))
{ $thick = 4;
$Road1 = $bright;
}
else
$thick = 1 ;
if((strchr(strtolower($cfcc),"a1"))||(strchr(strtolower($cfcc),"a2"))||(strchr(strtolower($cfcc),"a3")))
{
$Road1 = $Orange;
$Road2 = $Orange;
$thick = 3;
}
else
{
$Road1 = $bright;
$Road2 = $bright;
$thick = 2;
}
unset($Orange);
if($row['tlid']!=$chktlid)
{
$icount=0;
$temparr_rt2[$icount]=$row['frlong'];
$icount=$icount+1;
$temparr_rt2[$icount]=$row['frlat'];
$icount=$icount+1;
//Loop for fetching 10 longitude,latitude points from table rt2
for($d=1;$d<=10;$d++)
{
if(($row['long'.$d]!=0)&&($row['lat'.$d]!=0))
{
$temparr_rt2[$icount]=$row['long'.$d];
$icount = $icount+1;
$temparr_rt2[$icount]=$row['lat'.$d];
$icount = $icount+1;
}
else
{
//Break the loop if both the longitude and latitude are zero
break;
}
}
$temparr_rt2[$icount] = $row['tolong'];
$icount = $icount+1;
$temparr_rt2[$icount] = $row['tolat'];
$icount = $icount+1;
}
else
{
$icount=$icount-2;
for($d=1;$d<=10;$d++)
{
if(($row['long'.$d]!=0)&&($row['lat'.$d]!=0))
{
$temparr_rt2[$icount]=$row['long'.$d];
$icount = $icount+1;
$temparr_rt2[$icount]=$row['lat'.$d];
$icount = $icount+1;
}
else
//Break the loop if both the longitude and latitude are zero
break;
}
$temparr_rt2[$icount] = $row['tolong'];
$icount = $icount+1;
$temparr_rt2[$icount] = $row['tolat'];
$icount = $icount+1;
}
$chktlid=$row['tlid'];
$temparr_rt2_1=cord_trans($temparr_rt2,$latc,$longc,$constant,$var);
$RoadName1=$fename." ".$fetype;
unset($RoadName1);
DrawLines1($temparr_rt2_1,$im2,$icount,$Road1,$Road2,$thick,$constant);
unset($Road1,$Road2,$thick,$chktlid);
//Road1-fillcolor Road2- Border color
//(Condition For printing road names once)
$intFlg=0;
/*******************************************************/
/***********************************************************************/
if($fetype=="Rd" || $fetype=="Ave")
{
if(!isset($flg)&&$flg!=true)
{
//fwrite($logFile,"Road Name = ".$RoadName."\r");
$x1 = $temparr8[0]; //Fromlong in x
$y1 = $temparr8[1]; //Fromlat in y
$x2 = $temparr9[0]; //Tolong in x
$y2 = $temparr9[1]; //Tolat in y
$arr1 = GetTheta($x1,$y1,$x2,$y2); //Function to Find Angle
$px = $arr1['C1'];
$py = $arr1['C2'];
$angle = $arr1['theta'];
$RoadName = $fedirp." ".$fename." ".$fetype." ".$fedirs;
$len2 = strlen($state_name);
unset($px,$py,$len2);
//changed 23 sept
//Storing x,y coordinates and angle for the LAndmarks name
$NamePts[$b]['x'] = $arr1['C1'];
$NamePts[$b]['y'] = $arr1['C2'];
$NamePts[$b]['angle'] = $angle;
$NamePts[$b]['string'] = $RoadName;
$NamePts[$b]['color'] = $Road3;
$b = $b+1;
$rdName[$rdCnt++]=trim($RoadName1);
}
unset($flg,$rdCnt);
//printing roadname alongwith the roadlines
unset($RoadName1);
}
else
{
$icount=$icount-2;
for($d=1;$d<=10;$d++)
{
if(($row['long'.$d]!=0)&&($row['lat'.$d]!=0))
{
$temparr_rt2[$icount] = $row['long'.$d];
$icount = $icount+1;
$temparr_rt2[$icount] = $row['lat'.$d];
$icount = $icount+1;
}
else
//Break the loop if both the longitude and latitude are zero
break;
}
$temparr_rt2[$icount] = $row['tolong'];
$icount = $icount+1;
$temparr_rt2[$icount] = $row['tolat'];
$icount = $icount+1;
}
//unset($temparr_rt2);
$chktlid=$row['tlid'];
unset($arr1,$temparr9,$fedirp,$fedirs);
$fename1 = $fename." ".$fetype;
unset($row);
}
mysql_free_result($result);
unset($rdName);
unset($Road3,$temparr8,$fename);
if($CreateLog)
{
fwrite($logFile,"For Drawing Roads Query executed\n\r");
fwrite($logFile,"end: ".date("H:i:s")."\n\r\n");
//fwrite($logFile,$sql."\n\r");
}
unset($Road3,$temparr8,$fename);
///////////////////////////////////////////////////////////////////////////
//
//Start of the procedure to print the names
///////////////////////////////////////////////////////////////////////////
if($CreateLog)
{
fwrite($logFile,"For For loop executed\n\r");
fwrite($logFile,"Start: ".date("H:i:s")."\n\r");
//fwrite($logFile,$sql."\n\r");
}
$NameBoxPts=array();
for($b=0,$maxCount=count($NamePts);$b<$maxCount;$b++) //Loop for String array starts
{
if ($b==0)//if condition For First name
{
$NameBoxPts[$b] =imagettftext($im3,$size,$NamePts[$b]['angle'],$NamePts[$b]['x'],$NamePts[$b]['y'],$NamePts[$b]['color'],$file,$NamePts[$b]['string']);
}
else
{
$overlap = false;
$box = imagettfbbox($size,$NamePts[$b]['angle'],$file,$NamePts[$b]['string']);
$px0 = $NamePts[$b]['x']+$box[0]+2;//$points[0];
$px1 = $NamePts[$b]['x']+$box[2]+2;//$points[2];
$px2 = $NamePts[$b]['x']+$box[4]+2;//$points[4];
$px3 = $NamePts[$b]['x']+$box[6]+2;//$points[6];
$py0 = $NamePts[$b]['y']+$box[1]+2;//$points[1];
$py1 = $NamePts[$b]['y']+$box[3]+2;//$points[3];
$py2 = $NamePts[$b]['y']+$box[5]+2;//$points[5];
$py3 = $NamePts[$b]['y']+$box[7]+2;//$points[7];
$minx = min($px0,$px1,$px2,$px3);
$maxx = max($px0,$px1,$px2,$px3);//$px1;
$miny = min($py0,$py1,$py2,$py3);//$py3;
$maxy = max($py0,$py1,$py2,$py3);//$py1;
unset($py0);
for($q=0,$max=count($NamePts);$q<$max;$q++)
{
$minpx = min($NameBoxPts[$q][0],$NameBoxPts[$q][2],$NameBoxPts[$q][4],$NameBoxPts[$q][6]); //Already Printed Points
$maxpx = max($NameBoxPts[$q][0],$NameBoxPts[$q][2],$NameBoxPts[$q][4],$NameBoxPts[$q][6]);
$minpy = min($NameBoxPts[$q][1],$NameBoxPts[$q][3],$NameBoxPts[$q][5],$NameBoxPts[$q][7]);
$maxpy = max($NameBoxPts[$q][1],$NameBoxPts[$q][3],$NameBoxPts[$q][5],$NameBoxPts[$q][7]);
$w=$px2-$px0;//$maxx-$minx+10;
$wp=$NameBoxPts[$q][2]-$NameBoxPts[$q][0];//$maxpx-$minpx;
$h=$maxy-$miny;//$py3-$py0;
$hp=$maxpy-$minpy;
unset($maxpy);
if(Collision_Test($minx, $miny, $w, $h,$minpx,$minpy,$wp,$hp))
{
$overlap = true;
break;
}
} ///////End of For Loop
if (!($overlap))
{
if( (strncmp(strtolower(trim($NamePts[$b]['string'])),"i-",2)==0)
||(strncmp(strtolower(trim($NamePts[$b]['string'])),"united states highway",strlen("united states highway"))==0)
||(strncmp(strtolower(trim($NamePts[$b]['string'])),"state route",strlen("state route"))==0) ||(strncmp(strtolower(trim($NamePts[$b]['string'])),$state_name,strlen($state_name))==0)
||(strncmp(strtolower(trim($NamePts[$b]['string'])),"state rt",2)==0)
||(strncmp(strtolower(trim($NamePts[$b]['string'])),"county road",strlen('county road'))==0)
||(strncmp(strtolower(trim($NamePts[$b]['string'])),"county route",strlen('county route'))==0)
)
PrintRoutNum($NamePts[$b]['string'],$im4,$NamePts[$b]['x'],$NamePts[$b]['y'],$white4,$state_name);
else
{
$NameBoxPts[$b]=imagettftext($im3,$size,$NamePts[$b]['angle'],$NamePts[$b]['x'],$NamePts[$b]['y'], $NamePts[$b]['color'],$file,$NamePts[$b]['string']);
//fwrite($logFile,"Road Name = ".$NameBoxPts[$b]."\r");
}
} //End of overlap if
} //End of if condition for second names
} //Loop for String array startsCode: Select all
andCode: Select all
tags where approriate when posting code. Read: [url=http://forums.devnetwork.net/viewtopic.php?t=21171]Posting Code in the Forums[/url][/color]