SantaCruze
Erfahrenes Mitglied
Hallo Zusammen. Und zwar habe ich ein kleines Problem. Ich lasse eine Foreach schleife innerhalb eines scripts laufen welches aber auch mit Smarty gekoppelt ist. Nun habe ich folgendes Problem, die Schleife scheint sehr performance lastig zusein, sprich teilweise hab ich nen Seitenaufbau bei 20 Objekten von 1.5 sekunden. Kann man die Schleife irgendwie umschreiben damit sie schneller läuft oder durch eine andere Schleifenart ersetzen? Habe vorher in nem Schleifen Benchmark gelesen das Foreach Schleifen teilweise um ein vierfaches langsamer sind als andere. Hier der Code
PHP:
$j=0;
foreach($buildlist as $id => $lev)
{
$smarty_buildlist[$j]['id'] = $id;
$smarty_buildlist[$j]['name'] = $db->building_get_name($id);
$smarty_buildlist[$j]['level'] = $lev-1;
$smarty_buildlist[$j]['buildlevel'] = $lev;
$smarty_buildlist[$j]['need_res'] = $db->formatted_building_get_costs($id,$lev);
$smarty_buildlist[$j]['need_time'] = $db->formatted_building_get_time($id,$lev,$_SESSION["coords"]);
$smarty_buildlist[$j]['color'] = "#FFFF00";
$smarty_buildlist[$j]['image'] = $db->building_get_image($id);
if($db->buildings_can_build($_SESSION["coords"],$id))
{
$smarty_buildlist[$j]['color'] = "#00FF00";
}
else
{
$smarty_buildlist[$j]['color'] = "#FF0000";
}
$db->reinit();
$taskid = $db->tasks_id_building_on_build($_SESSION["coords"],$id);
if($taskid != -1)
{
$smarty_buildlist[$j]['onbuild'] = 1;
$db->reinit();
$smarty_buildlist[$j]['resttime'] = $db->tasks_endtime($taskid)-time();
$db->reinit();
$smarty_buildlist[$j]['resttime_formatted'] = date("H:i:s",$smarty_buildlist[$j]['resttime']);
$smarty_buildlist[$j]['color'] = "#FFFFFF";
$somethingonbuild=1;
}
unset($db); $db = new cl_extended_database;
$j++;
}