It appears that in repetitive randomized testing with sample size of 100,000 per instance the variance does not exceed +-.002 seconds. If testing a looping version I think this level of variance would be sufficient for an adequate comparison.
Glenn
>Glenn
>
>I see you're trying something like what I posted. I like how you're trying to reduce the code's length. But, given June 11, 2003 and June 6, 2003 your version returns 11 days. Counting the days on the calendar I get 5 days.
>
>The random testing makes it impossible to determine if one routine is faster than another.
>
>>Thanks, here is a newer version which also is based upon weeks but in a different way.
>>
>>LPARAMETERS dDate1, dDate2
>>LOCAL wks, wkd
>>
>>hd = MAX(ddate1,ddate2)
>>ld = Min(ddate1,ddate2)
>>
>>wks = INT( (hd - ld)/ 7)
>>
>>* Return Weeks * 5 which is overal workdays
>>* Adjust for starting day of the first week
>>* And adjust for the last partial week
>>
>>RETURN ;
>> INT(wks * 5 + ;
>> IIF(DOW(ld,2) < 6, 6-DOW(ld,2),0) + ;
>> IIF(DOW(hd,2) < 6, DOW(hd,2),0) )
>>
>>
>>
>>On my computer (AMD 1.6g 256mb) a 100,000 randomized test took 2.031 seconds including the considerable overhead of the test itself.
>>
>>ld = RAND(-1)
>>nStart = SECONDS()
>>FOR i = 1 TO 100000
>> noffset = INT(RAND()* 36)
>> ld = GOMONTH(DATE(),1-noffset)
>> hd = GOMONTH(DATE(),noffset)
>> wkd = workdays(ld,hd)
>>ENDFOR
>>MESSAGEBOX('Execution time was '+TRANSFORM(SECONDS()-nstart)+' seconds')
>>
>>
>>
>>What do you think of this version?
>>
>>Thanks
>>
>>Glenn
>>
>>
>>>Glenn,
>>>
>>>That code will fail if the dates cross a year boundary or are more than a year apart.
>>>
>>>>I needed a solution to determine the number of workdays between two dates and have not been satisfied with the prevalent techniques.