Příručka stylu psaní: Porovnání verzí

Z Freenetis Wiki
Přejít na: navigace, hledání
(Založena nová stránka: Pro inspiraci: *http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml *http://www.kernel.org/doc/Documentation/CodingStyle *http://en.wikipedia.org/wiki/Indent_sty...)
 
(Static vs. normal methods/members/variables)
Řádek 9: Řádek 9:
 
Try this example:
 
Try this example:
  
<?php
+
<?php
+
  class Normal {
class Normal {
+
public $x=0;
public $x=0;
+
}
}
+
 
 
+
  class Statik {
class Statik {
+
public static $x=0;
public static $x=0;
+
}
}
+
 
 
+
  $limit=50000;
$limit=50000;
+
$mem1=memory_get_usage();
$mem1=memory_get_usage();
+
$time1=microtime(true);
$time1=microtime(true);
+
$normal=new Normal();
$normal=new Normal();
+
echo "Normal object test:<br/>";
echo "Normal object test:<br/>";
+
 
 
+
  for ($i=0; $i<$limit; $i++) {
for ($i=0; $i<$limit; $i++) {
+
$normal->x=$normal->x+$i;  
$normal->x=$normal->x+$i;  
+
 
 
+
  }
}
+
echo $normal->x."<br/>";
echo $normal->x."<br/>";
+
 
 
+
  $mem2=memory_get_usage();
$mem2=memory_get_usage();
+
$time2=microtime(true);
$time2=microtime(true);
+
 
 
+
  echo "Static object test:<br/>";
echo "Static object test:<br/>";
+
 
 
+
  for ($i=0; $i<$limit; $i++) {
for ($i=0; $i<$limit; $i++) {
+
Statik::$x=Statik::$x+$i;  
Statik::$x=Statik::$x+$i;  
+
}
}
+
 
 
+
  echo Statik::$x."<br/>";
echo Statik::$x."<br/>";
+
 
 
+
  $mem3=memory_get_usage();
$mem3=memory_get_usage();
+
$time3=microtime(true);
$time3=microtime(true);
+
+
printf("Normal: Memory=%d time=%f<br/>", $mem2-$mem1, $time2-$time1);
printf("Normal: Memory=%d time=%f<br/>", $mem2-$mem1, $time2-$time1);
+
printf("Static: Memory=%d time=%f<br/>", $mem3-$mem2, $time3-$time2);
printf("Static: Memory=%d time=%f<br/>", $mem3-$mem2, $time3-$time2);
+
?>
?>
+
 
 +
Result
 +
Normal: Memory=728 time=0.049930
 +
Static: Memory=220 time=0.057258

Verze z 25. 5. 2011, 11:15

Pro inspiraci:

Static vs. normal methods/members/variables

In PHP, static is slower (see http://stackoverflow.com/questions/1472721/php-performance-of-static-methods-vs-functions).

Try this example:

<?php	
 class Normal {
		public $x=0;
	}
 	
	class Statik {
		public static $x=0;
	}
 	
	$limit=50000;
	$mem1=memory_get_usage();
	$time1=microtime(true);
	$normal=new Normal();
	echo "Normal object test:
"; for ($i=0; $i<$limit; $i++) { $normal->x=$normal->x+$i; } echo $normal->x."
"; $mem2=memory_get_usage(); $time2=microtime(true); echo "Static object test:
"; for ($i=0; $i<$limit; $i++) { Statik::$x=Statik::$x+$i; } echo Statik::$x."
"; $mem3=memory_get_usage(); $time3=microtime(true); printf("Normal: Memory=%d time=%f
", $mem2-$mem1, $time2-$time1); printf("Static: Memory=%d time=%f
", $mem3-$mem2, $time3-$time2); ?>

Result

Normal: Memory=728 time=0.049930
Static: Memory=220 time=0.057258