1. Displaying Updates Over Time

I've got a Euphoria program that could potentially iterate over some code millions of times. At first I was running this in a console and using a position() and printf() to display updates, but I know that takes a little time and, over the course of millions of iterations, could have a drastic affect on the time it takes to run. Or maybe not. Maybe that's something I should test.

Anyway, so then I used a if integer(counter/10000) then... to display an update, but I'm wondering if the "if" statement and division over every iteration is just as slow as a position()+puts() combo. Probably not, but it still takes time.

Now I'm wondering if setting up a timer in a multitasking task that hits every second might work. I'll give that a try, but I'd like to get ideas from everybody else.

Oh, I've thought of maybe a

if get_key() = ' ' then 
  -- display some info 
end if 

which is still an "if" but might be faster than an integer type-check plus division.

So, what's the best way to keep up-to-date on a program's process over millions of iterations? :)

new topic     » topic index » view message » categorize

2. Re: Displaying Updates Over Time

euphoric said...

So, what's the best way to keep up-to-date on a program's process over millions of iterations? smile

Go to bed and check in the morning blink

But seriously ... try this.

atom dtrig 
. 
dtrig = time() + 60 
.  
while looping do 
  -- display progress every 60 seconds. 
  if dtrig <= time() then 
     display( whatever ) 
     dtrig = time() + 60 
  end if 
  . 
  . 
  . 
end while 
new topic     » goto parent     » topic index » view message » categorize

3. Re: Displaying Updates Over Time

I had been known to use a second counter.

atom millions 
integer show_it -- Should I show it yet? 
 
millions = 12345678 
show_it = 0 
for a = 1 to millions do 
  if (not show_it and get_key() != -1) then -- Resets the counter. 
    show_it = 1000 
    if (get_key() != -1 ) then -- Display if keypress in buffer 
      puts(1, "Show iteration data\n") 
    end if 
  end if 
  show_it -= 1  -- Reduce the display counter by one. 
end for 

PS: I'm an old style euphoria coder. My code is v2.4 to v3.1 based. (Sorry)

Unkmar

new topic     » goto parent     » topic index » view message » categorize

4. Re: Displaying Updates Over Time

I had to fix a bug in my code. I had used:

  if (not counter and get_key() = -1) then -- Reset counter if a key is pressed and counter is 0. 
    counter = 1000 
  end if 

The problem is that the counter will only be reset IF a key has been pressed during that iteration. If you miss it. then the counter continued to decrease into the negatives and never reach zero again.

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu