Thomas Meinike: Math. weiter funktionen

Beitrag lesen

Hallo,

Danke schön, es funktioniert. Nun doch ne' Frage, diese berechnung müsste etwa alle 0,03 sek durchgeführt werden, desswegen ist es wichtig, welche der beiden möglichkeiten schneller ist...

Die direkte Multiplikation ist schneller als das Potenzieren mit Math.pow(), wie dieser Test zeigt (je 100000 Aufrufe beider Funktionen):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Test by TM 11/02</title>
<script language="JavaScript" type="text/javascript">
<!--

function Pythagoras1(a,b)
{
  return Math.sqrt(a*a+b*b);
}

function Pythagoras2(a,b)
{
  return Math.sqrt(Math.pow(a,2)+Math.pow(b,2));
}

function Test()
{
  var start,stop,diff1,diff2,i;

start=new Date();
  for(i=0;i<100000;i++)
  {
    Pythagoras1(3,4);
  }
  stop=new Date();
  diff1=new Date(stop-start).getSeconds()*1000+new Date(stop-start).getMilliseconds();

start=new Date();
  for(i=0;i<100000;i++)
  {
    Pythagoras2(3,4);
  }
  stop=new Date();
  diff2=new Date(stop-start).getSeconds()*1000+new Date(stop-start).getMilliseconds();

alert("Pythagoras1: "+diff1+" ms\n"+"Pythagoras2: "+diff2+" ms");
}

//-->
</script>
</head>
<body onload="Test()">
<p>Pythagoras-Test</p>
</body>
</html>

MfG, Thomas