BTW:

In terms of code styling, if you reverse all your tests, your if statements 
would not creep off the screen and it becomes much more legible:

                                for (var i:int = 0; i < length; i++) {   /*  
Loop Through Each of the
Records*/
                                        if (tempArray[i].status != "Act") { /*  
Test to see if current record status is ACTIVE */
                                                continue;
                                        }
                                        for (var j:int = 0; j < length; j++){  
/*  Compare to Each of the other Records*/
                                                if (i == j) {continue;} /*  
Make sure you are not comparing a record to itself */
                                                if (tempArray[i].propOne != 
tempArray[j].propOne) { continue; }
                                                if (tempArray[i].propTwo != 
tempArray[j].propTwo) { continue; }
                                                if (tempArray[i].propThree != 
tempArray[j].propThree) { continue; }
                                                if 
(Math.abs(tempArray[i].propFour - tempArray[j].propFour) > 10) { continue; }
                                                if (tempArray[i].propFive != 
tempArray[j].propFive) { continue;}
                                                if 
(Math.abs(tempArray[i].propSix - tempArray[j].propSix) > 1){ continue;}
                                                if 
(Math.abs(tempArray[i].propSeven - tempArray[j].propSeven) > 1) { continue;}
                                                if 
(Math.abs(((tempArray[i].propEight - 
tempArray[j].propEight)/tempArray[i].propEight))<0.10) {
                                                        //do your stuff

On Aug 4, 2016, at 12:35 AM, bilbosax <waspenc...@comcast.net> wrote:

> I have resisted actually posting the code because it has been suggested to me
> that the app should be looked at for a patent, and this calculation process
> is at the heart of the idea.  So I have reduced the variables down to just
> generic names so as not to give away my idea away.  I really liked your idea
> of combining all of the conditionals to one line using && operators, but in
> the end it was no faster.  Two minutes and forty seconds to complete.  I
> believe this is because, in my code, I have placed the conditionals in an
> order that is most likely to throw out a record quickly if it is not a good
> comparator, whereas your idea forces all of the conditionals to HAVE to be
> considered for EVERY record(at least I think that it does).  Here is a
> simplified version of the code:
> 
> protected function recalculateHandler(event:Event):void
>                       {
>                               processingPU.removeEventListener("popUpOpened", 
> recalculateHandler);
>                               
>                               var count:int = 0;
>                               var average:Number = 0.0;
>                               var someNumberl:Number = 0.0;
>                               var lon1:Number;
>                               var lon2:Number;
>                               var lat1:Number;
>                               var lat2:Number;
>                               var dlon:Number;
>                               var dlat:Number;
>                               var a:Number;
>                               var c:Number;
>                               var d:Number;
>                               var tempDist:Number = 
> (distance.selectedIndex*.25)+.25;
>                               var length:int = mainArrayCollection.length;
>                               var tempArray:Array = new Array();
>                               compArrayCollection = new ArrayCollection();
>                               tempCompArray = new Array();
>                               tempArray = speedArrayCollection.source;
>                               
>                               for (var i:int = 0; i < length; i++) {   /*  
> Loop Through Each of the
> Records*/
>                                       if (tempArray[i].status == "Act") { /*  
> Test to see if current record
> status is ACTIVE */
>                                               for (var j:int = 0; j < length; 
> j++){  /*  Compare to Each of the
> other Records*/
>                                                       if (i != j) {   /*  
> Make sure you are not comparing a record to itself
> */
>                                                               if 
> (tempArray[i].propOne == tempArray[j].propOne) { 
>                                                                       if 
> (tempArray[i].propTwo == tempArray[j].propTwo) {
>                                                                               
> if (tempArray[i].propThree == tempArray[j].propThree) { 
>                                                                               
>         if (Math.abs(tempArray[i].propFour - tempArray[j].propFour) <=
> 10) { 
>                                                                               
>                 if (tempArray[i].propFive == tempArray[j].propFive) { 
>                                                                               
>                         if (Math.abs(tempArray[i].propSix - 
> tempArray[j].propSix) <= 1)
> { 
>                                                                               
>                                 if (Math.abs(tempArray[i].propSeven - 
> tempArray[j].propSeven)
> <= 1) { 
>                                                                               
>                                         if (Math.abs(((tempArray[i].propEight 
> -
> tempArray[j].propEight)/tempArray[i].propEight))<0.10) {
>                                                                               
>                                                 lon1 = 
> tempArray[i].longitude*Math.PI/180;
>                                                                               
>                                                 lon2 = 
> tempArray[j].longitude*Math.PI/180;
>                                                                               
>                                                 lat1 = 
> tempArray[i].latitude*Math.PI/180;
>                                                                               
>                                                 lat2 = 
> tempArray[j].latitude*Math.PI/180;
>                                                                               
>                                                 dlon = lon2 - lon1;
>                                                                               
>                                                 dlat = lat2 - lat1;
>                                                                               
>                                                 a = 
> Math.pow(Math.sin(dlat/2), 2) +
> (Math.cos(lat1)*Math.cos(lat2)*Math.pow(Math.sin(dlon/2), 2));
>                                                                               
>                                                 c = 
> 2*Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
>                                                                               
>                                                 d = 3961 * c;
>                                                                               
>                                                 
>                                                                               
>                                                 if (d <= tempDistance ) {
>                                                                               
>                                                         count = count + 1;
>                                                                               
>                                                         someProp = someProp + 
> Number(tempArray[j].propEleven);
>                                                                               
>                                                         tempCompArray.push({" 
> push about 26 properties from one
> array to a comparison array, plus some new values});
>                                                                               
>                                                         
> tempArray[i].propTwelve = istrue;
>                                                                               
>                                                 }
>                                                                               
>                                         }
>                                                                               
>                                 }
>                                                                               
>                         }
>                                                                               
>                 }
>                                                                               
>         }
>                                                                               
> }
>                                                                       }
>                                                               }
>                                                       }                       
>                         
>                                               }
>                                               
>                                               if (count != 0) {               
>                                                                         /*  
> Populate data if there is actually
> data to be updated */
>                                                       average = 
> someProp/Number(count);
>                                                       
> tempArray[i].propThirteen = count;
>                                                       tempArray[i].Prop14 = 
> average;
>                                                       
>                                                       if (average == 0.0) {
>                                                               
> tempArray[i].propFourteen = 0.0;
>                                                       } else {
>                                                               
> tempArray[i].propFourteen = (Number(tempArray[i].propTen) -
> average)/average *100.0;
>                                                       }
>                                                       
>                                                       
> tempArray[i].propFifteen = tempArray[i].propFourteen -
> tempArray[i].propFifteen;
>                                               }
>                                               
>                                               count = 0;
>                                               average = 0.0;
>                                               someNumber = 0.0;
>                                       }
>                               }
>                               
>                               PopUpManager.removePopUp(processingPU);
>                               compArrayCollection.source = tempCompArray;
>                               mainArrayCollection.source = tempArray;
>                               
>                    }
> 
> 
> 
> --
> View this message in context: 
> http://apache-flex-users.2333346.n4.nabble.com/Workers-and-Speed-tp13098p13192.html
> Sent from the Apache Flex Users mailing list archive at Nabble.com.

Reply via email to