Skip to Content.
Sympa Menu

cacert-de - RE: Performance - Re: AW: nur noch wenige aktive Assurer

Subject: Deutschsprachige CAcert Support Liste

List archive

RE: Performance - Re: AW: nur noch wenige aktive Assurer


Chronological Thread 
  • From: <ulrich AT cacert.org>
  • To: <cacert-de AT lists.cacert.org>
  • Subject: RE: Performance - Re: AW: nur noch wenige aktive Assurer
  • Date: Thu, 17 Sep 2009 16:46:01 +0200
  • Authentication-results: lists.cacert.org; dkim=pass (1024-bit key) header.i= AT cacert.org; dkim-asp=none
  • Importance: Normal

und wie wuerde die fertige Formel dann aussehen ?!?

waere dann gleich als Performance Verbessurung fuer's
"Find An Assurer" Script bzw. fuer die Event-Mailing-Scripts ,-)


regards, uli   ;-)

-----Original Message-----
From: Thomas Bremer 
[mailto:thomas.bremer AT cacert.org]
 
Sent: Thursday, September 17, 2009 4:39 PM
To: 
cacert-de AT lists.cacert.org
Subject: Performance - Re: AW: nur noch wenige aktive Assurer


Hi Uli,
diese Mail ist ein bisschen off topic. Okay, habe den Betreff geändert.
>   $maxdist = 50;       // i.e. 50 km
>   $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() ...
den 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.

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

Attachment: smime.p7s
Description: S/MIME cryptographic signature




Archive powered by MHonArc 2.6.16.

Top of Page