Subject: Deutschsprachige CAcert Support Liste
List archive
- From: Thomas Bremer <thomas.bremer AT cacert.org>
- To: cacert-de AT lists.cacert.org
- Subject: Performance - Re: AW: nur noch wenige aktive Assurer
- Date: Thu, 17 Sep 2009 16:39:04 +0200
- Authentication-results: lists.cacert.org; dkim=pass (1024-bit key) header.i= AT cacert.org; dkim-asp=none
Hi Uli,
diese Mail ist ein bisschen off topic. Okay, habe den Betreff geändert.
$maxdist = 50; // i.e. 50 kmden größten Teil der wilden Formel habe ich mal abgeschnitten. Da wird die Großkreisentfernung berechnet. Ich halte das für Overkill, zumal Assurees normalerweise eine andere Route nehmen. (Wer hat schon ein Flugzeug mit eingebauter Windstille? ;-) ) Eine Näherung würde hier auch reichen. Und weil im Formular auf der Seite $maxdist <= 1000 ist, geht das auch ziemlich einfach. Die "spezifische Entfernung" zwischen unterschiedlichen Breiten auf einem Meridian ist (40,000 / 360) km/deg. Auf einem Breitenkreis, also zwischen zwei Punkten gleicher Breite, ist sie (40,000 / 360 * cos(lat)) km / deg. Jetzt nehmen wir als Breite die von $locid tun wir so, als wären wir in der Ebene und benutzen den guten alten Pythagoras und kriegen eine Näherung für die Entfernung. Und wenn wir die Sache noch etwas beschleunigen wollen, dann quadrieren wir die Ungleichung. Damit ersparen wir uns die Wurzel.
$locid = 715191; // Hamburg i.e. Location des Assuree
$query = "select * from `locations` where `id`='$locid'";
$loc = mysql_fetch_assoc(mysql_query($query));
$query = "SELECT ROUND(6378.137 * ACOS(0.9999999*((SIN(PI() * $loc[lat]
/ 180) * SIN(PI()
...
Was bringt das an Effizienz? Nun ja, von den 5 * Count_Assurer trigonometrischen Operationen bleibt noch eine übrig. Die Multiplikationen zähle ich erstmal nicht, sie sind aber normalerweise wesentlich schneller als sin / cos / acos, auch wenn sie in Hardware mit CORDIC gerechnet werden. Brauchen wir das? Ich habe eben mal probeweise Reykjavík (1561244) als Ort eingegeben und mit 10 km und 1000 km als Limit gesucht. Hat mehrere Sekunden gedauert. Frankfurt (606058) dauert auch so lange - jedenfalls bei 10 km. Andere können das wesentlich besser.
regards, Thomas
- RE: AW: nur noch wenige aktive Assurer, (continued)
- RE: AW: nur noch wenige aktive Assurer, ulrich, 09/17/2009
- Re: AW: nur noch wenige aktive Assurer, Benedikt Heintel, 09/17/2009
- Re: AW: nur noch wenige aktive Assurer, Andreas Bürki, 09/17/2009
- Re: AW: nur noch wenige aktive Assurer, Ina Kupp, 09/18/2009
- Re: AW: nur noch wenige aktive Assurer, Hans-Peter Lehner, 09/18/2009
- Re: AW: nur noch wenige aktive Assurer, dirk astrath, 09/18/2009
- Re: AW: nur noch wenige aktive Assurer, Benedikt Heintel, 09/18/2009
- Re: AW: nur noch wenige aktive Assurer, Dominik George, 09/18/2009
- Re: AW: nur noch wenige aktive Assurer, dirk astrath, 09/18/2009
- Re: AW: nur noch wenige aktive Assurer, Dr. Tilo Levante, 09/18/2009
- RE: Performance - Re: AW: nur noch wenige aktive Assurer, ulrich, 09/17/2009
- Re: Performance - Re: AW: nur noch wenige aktive Assurer, Florian Lagg, 09/17/2009
- Re: Performance - Re: AW: nur noch wenige aktive Assurer, Thomas Bremer, 09/17/2009
- Re: AW: nur noch wenige aktive Assurer, Markus Warg, 09/18/2009
Archive powered by MHonArc 2.6.16.