comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Doing Nothing Takes Longer Than Doing... Nothing?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Doing Nothing Takes Longer Than Doing... Nothing? [message #38003] Wed, 11 February 2004 03:25
timrobishaw is currently offline  timrobishaw
Messages: 16
Registered: June 2003
Junior Member
Hi there,

I'm really stumped here. I wrote a routine that compares the average
time to run two different modules. I decided to run the benchmark in
clumps... I timed how long it took to complete routine #1 NREPS times
and then took the average; then I did the same for routine #2. BUT, I
also repeated this process NAVGS times (since I can see fluctuations
in the average time when I load ESPN in my web browser! I have a slow
computer on my desk, but the situation I'm about to describe was
reproduced on some wicked fast machines). So the most basic test I
could come up with was to make two modules, TESTROUTINE1 and
TESTROUTINE2 that do ABSOLUTELY NOTHING. My first guess would be that
they should take the same amount of time to run. But I wouldn't be
writing this post if they had. I would be hugely appreciative if some
kind folks would run the code below and see if they find this similar
pathology: no matter which modules I race and no matter which order I
race them in (e.g., TESTROUTINE1 vs. TESTROUTINE2 or TESTROUTINE2 vs.
TESTROUTINE1 or *even* TESTROUTINE1 vs. TESTROUTINE1) I find that the
module inside the first loop is always FASTER. I threw in a 3rd
routine that does NOTHING as well... same deal. I have a feeling this
may have something to do with the fundamentals of computer science, or
magic. Any help here would be appreciated! Best -Tim.

;==================================
pro testroutine1
end
;==================================
pro testroutine2
end
;=================================
pro testroutine3
end
;=================================
pro benchmark

NREPS=5000L
NAVGS=50L

profiler, /SYSTEM, /CLEAR, /RESET
profiler,'testroutine1'
profiler,'testroutine2'
profiler,'testroutine3'

delt1 = dblarr(navgs)
delt2 = dblarr(navgs)
for j = 0L, navgs-1L do begin

; TIME ROUTINE NUMBER 1...
tstart = systime(1)
for i = 1L, nreps do begin
testroutine1
endfor
delt1[j] = (systime(1)-tstart)

; TIME ROUTINE NUMBER 2...
tstart = systime(1)
for i = 1L, nreps do begin
testroutine2
endfor
delt2[j] = (systime(1)-tstart)

; UPDATE OUR PROGRESS...
print, 100*j/(navgs-1), format='($,"Progress: ",I4,"%",%"\R")'

endfor

;==============
; GET THE AVERAGE TIMES...
avg1 = delt1/double(nreps)
avg2 = delt2/double(nreps)

;==============
; GET THE MEANS...
mnavg1 = total(avg1,/DOUBLE)/double(navgs)
mnavg2 = total(avg2,/DOUBLE)/double(navgs)

; TELL US ABOUT THE RESULTS...
print, mnavg1, format='(2(%"\V"),"Average1 = ",e16.7," s")'
print, mnavg2, format='("Average2 = ",e16.7," s",%"\V")'

; WHAT DOES IDL CODE PROFILER REPORT...
print, 'IDL Code Profiler reports:'
profiler, /REPORT
profiler, /CLEAR

end; benchmark
[Message index]
 
Read Message
Previous Topic: An Interactively rotating 3D animation ?
Next Topic: Re: Problem with IDL 6.0, smb://, PowerMac G4, OS 10.2.8

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 18:26:50 PDT 2025

Total time taken to generate the page: 0.00390 seconds