Optimierungen von ein paar Funktionen !!
-
Hi @all,
ich habe ein Problem mit der Preformance und muss daher vollgende funktionen optimieren, hättet ihr da ideen, das ganze preformance technisch zu verbessern ?....
Achja, code ist in PHP!//------------------------------------------------------- // Purpose: convert an object to array containing the object values // Output : array obj //------------------------------------------------------- function ConvertObjectToArray( $obj ) { if( !$obj ) return NULL; if( sizeof($obj) == 0 ) return NULL; $aArray = array(); $_obj_var_list = get_object_vars($obj); while( list($var_name, $var_value) = each($_obj_var_list) ) $aArray[$var_name] = $var_value; return $aArray; } .... function recuConvertXArrayObjectArray( $obj, &$pOut ) { if( gettype( $obj ) != 'array' ) { if( gettype($obj) != 'object' ) { $pOut = $obj; } else { $pOut = ConvertObjectToArray( $obj ); } } else { $pOut = array(); for( $i=0; $i < sizeof($obj); $i++ ) { recuConvertXArrayObjectArray( $obj[$i], $pOut[sizeof($pOut)] ); } } } function ConvertXArrayObjectArray( $obj ) { $data=NULL; recuConvertXArrayObjectArray( $obj, $data); return $data; }
-------------
Grundfunktion ist "ConvertXArrayObjectArray" die immer aufgerufen wird.Also ich convertier mit dieser funktion ein Array von objekten in ein Array von arrays
d.h.
array[0]->name = "Ich"; array[0]->tel = "0516165";
$array[0]->handy = "1781512515";array[1]->name = "Ich1"; array[1]->tel = "0516165_1";
$array[1]->handy = "1781512515_1";...usw
IN mit ConvertXArrayObjectArray( $array );
array[0]['name'] = "Ich"; array[0]['tel'] = "0516165";
$array[0]['handy'] = "1781512515";Vielleicht findet ihr noch irgend eine stelle
Ciao
-
Ohne deine Funktionen ganz verstanden zu haben: Mir fällt auf, dass du die Objekte per Value übergibst, was dazu führt, dass PHP bei jedem Funktionsaufruf eine Kopie des Objektes anfertigt. Du solltest Objekte lieber immer als Referenz übergeben um sowas zu vermeiden. Allerdings weiß ich nicht ob es eine gute Idee ist, bei einer rekursiven Funktion die Objekte als Referenz zu übergeben. Probier's einfach aus...
-
z.B.
if( gettype( $obj ) != 'array' ) { if( gettype($obj) != 'object' )
if(!is_array($ob)) { if(!is_object($ob))
EDIT:
Ich verstehe diesen Codeblock nicht ganz:$pOut = array(); for( $i=0; $i < sizeof($obj); $i++ ) { recuConvertXArrayObjectArray( $obj[$i], $pOut[sizeof($pOut)] ); }
sizeof(i schreiben.