Possible a good use of using an external COM object do to the work instead?
Or a C++ DLL - or J2ee class?

--  
Alex Kac, CEO/Developer

Innovation in Personal and Business Information Management
http://www.pocketinformant.com/

zoomzoom 


> From: Mike Tyranski <[EMAIL PROTECTED]>
> Reply-To: [EMAIL PROTECTED]
> Date: Wed, 24 Jul 2002 12:52:26 -0500
> To: Multiple recipients of list witango-talk <[EMAIL PROTECTED]>
> Subject: Re: Witango-Talk:  Is Witango slow at doing nasty math?
> 
> Nathan,
> 
> I've had to develop a couple of dealer locators in the past.  After looking
> again, I get similar times as you.  Fortuanately in my case, the results
> rarely
> return more than 100 matches.  A while back when I was doing some testing with
> JTransit, these math operations seemed to be faster than Witango.
> 
> Mike
> 
> Nathan Hitchcock wrote:
> 
>> Greetings,
>> 
>> I've just finished a "dealer locator" app that provides a list of store
>> addresses within X miles to given zip code.  It's basically that "show me
>> the closest locations to me" feature that every site seems to have now.
>> While it was not the big of a deal to develop, I'm running into some
>> performance issues, and they seem to revolve around Witango's ability to
>> perform complex triginomic calculations.  Here's the code that seems to be
>> slowing it down:
>> 
>> <@ROWS ARRAY="local$matches">
>> 
>> <@! define variables >
>> <@ASSIGN NAME="lat2" SCOPE="local" VALUE='<@COL 2>'>
>> <@ASSIGN NAME="long2" SCOPE="local" VALUE='<@COL 3>'>
>> 
>> <@! calc distance in kilometers >
>> <@ASSIGN NAME="x" SCOPE="local" VALUE='<@CALC EXPR="(sin(@@local$lat1 *
>> @@local$pi / 180) * sin(@@local$lat2 * @@local$pi / 180) + cos(@@local$lat1
>> * @@local$pi / 180) * cos(@@local$lat2 * @@local$pi / 180) *
>> cos(abs((@@local$long2 * @@local$pi / 180)-(@@local$long1 * @@local$pi /
>> 180))))">'>
>> <@ASSIGN NAME="x" SCOPE="local" VALUE='<@CALC
>> EXPR="atan((sqrt(1-(@@local$x*@@local$x)))/@@local$x)">'>
>> <@ASSIGN NAME="dist_km" SCOPE="local" VALUE='<@CALC EXPR="1.852 * 60.0 *
>> ((@@local$x/@@local$pi)*180)">'>
>> 
>> <@! convert distance to miles >
>> <@ASSIGN NAME="dist_mi" SCOPE="local" VALUE='<@CALC EXPR="@@local$dist_km /
>> 1.609344">'>
>> 
>> <@! add row to array with distances >
>> <@ASSIGN NAME="row_str" SCOPE="local" VALUE='<@COL 1>,<@COL 2>,<@COL
>> 3>,@@local$dist_mi,<@OMIT STR="<@COL 4>" CHARS=",">,<@OMIT STR="<@COL 5>"
>> CHARS=",">,<@OMIT STR="<@COL 6>" CHARS=",">,<@COL 7>,<@COL 8>'>
>> <@ADDROWS ARRAY="local$matches2" VALUE="<@ARRAY ROWS='1' COLS='9'
>> VALUE='@@local$row_str'>">
>> 
>> </@ROWS>
>> 
>> The "matches" array is generated by finding all locations that fit within a
>> pair of lattitude and logitude corrdinates that were calculated in a
>> previous step.  Basically, the user enteres a zip code and a desired
>> distance from that zip code and it finds all addresses within that area,
>> leaving you with the "matches" array.  The code above then takes that array
>> and determines the exact distance from the target zip code so it can sort
>> the list accordingly.
>> 
>> This array can contain anywhere from just a few addresses to thousands.  Any
>> thing under about 100 matches it can process in about 3 seconds or less.
>> More than about 100, and the user is twiddling their thumbs in wait.  Here's
>> some times I've logged with the assistance of the <@TIMER> tag.
>> 
>> MATCHES  TIME(MS)
>> 58         1166
>> 79         2033
>> 148        6950
>> 206       12700
>> 291       23617
>> 320       28450
>> 660      113733
>> 
>> Server Specs: Dual 500 PIII, 500 MB Ram, running Win NT 4.0
>> 
>> Does this seem like an excessivly long time to do this kind of math, or is
>> it just me?  Would I be better off writing this particular bit of code so
>> that SQL does the math?
>> 
>> ________________________________________________________________________
>> TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
>>                 with unsubscribe witango-talk in the message body
> 
> --
> Mike Tyranski
> Lynch2
> p: 847.608.6900
> f: 847.608.9501
> http://www.lynch2.com
> 
> 
> ________________________________________________________________________
> TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
>               with unsubscribe witango-talk in the message body
> 

________________________________________________________________________
TO UNSUBSCRIBE: send a plain text/US ASCII email to [EMAIL PROTECTED]
                with unsubscribe witango-talk in the message body

Reply via email to