PHP CPU stress test

Recent vroeg iemand mij of ik even een scriptje in elkaar kon zetten wat een CPU tot de max kon drijven via PHP. Natuurlijk wil ik dat. Heel even voelt het dan net of je iets mag slopen. Na een korte brainstorm realiseerde ik me dat het helemaal niet zo’n ingewikkelde uitdaging ging worden als ik had gehoopt. Ik moest een proces hebben wat veel rekenkracht vroeg en ik moest het gewoon zo vaak mogelijk los laten op de processor als mogelijk in een zo kort mogelijk tijd. Het eerst wat in me opkwam was een loop met daarin een PI calculatie. Beetje zoeken op internet gaf me een nette PI calculatie code, daar nog wat omheen bakken en dan heb je iets als:

function bcpi($precision){
	bcscale($precision+6);
	$a = bcsqrt(2);
	$b = 0;
	$p = bcadd(2, $a);
	$i = 0;
	$count = ceil(log($precision+6)/log(2))-1;
	while($i < $count){
		$sqrt_a = bcsqrt($a);
		$a1 = $a;
		$a = bcdiv(bcadd($sqrt_a,bcdiv(1,$sqrt_a)),2);
		$b_up = bcmul($sqrt_a,bcadd(1,$b));
		$b_down = bcadd($a1,$b);
		$b = bcdiv($b_up, $b_down);
		$p_up = bcmul(bcmul($p,$b),bcadd(1,$a));
		$p_down = bcadd(1, $b);
		$p = bcdiv($p_up, $p_down);
		++$i;
	}
 
return bcadd($p,0,$precision);
}

for ($i = 1; $i <= 100; $i++) {
	bcpi(10000+$i);
}
die('Unbelievable, your CPU is a monster!');

Of download hem hier als kant-en-klaar PHP bestandje (rar file)

Geef een reactie

Jouw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *