JASS loop iteration problem

xPheRe

New Member
Reaction score
43
Days ago I'd needed a loop to iterate over 16384 values.
So I wrote this code
Code:
local integer idx = 0
loop
    exitwhen idx >= 16384
    (do stuff)
    set idx = idx + 1
endloop
I was surprised when I executed it. The loop never reached the end.
I've tried to make the trigger writes on screen a message every time it processed 128 values to look at what index it hangs, so I wrote
Code:
local integer i = 0
local integer idx = 0
loop
    loop
        exitwhen i >= 128
        exitwhen idx >= 16384
        (do stuff)
        set idx = idx + 1
        set i = i + 1
    endloop

    exitwhen idx >= 16384
    call DisplayTimedTextToForce(GetPlayersAll(), 5.00, I2S(idx))
    set i = 0
endloop
It processed until 6528 and then ends. The map was running, but the loop hadn't end succesfully.
So I try to remove the message and call a polled wait instead.
Instead of DisplayTimedTextToForce... I wrote
Code:
call PolledWait(0.01)
Incredibly, it worked. It's a lot slower (even changing the 128 value to a 2048, because with 4096 I have the same problem) but it works...
There's anybody out there that can explain this weird behaviour to me????
It's annoying me :banghead:
 
The only thing I can come up with is that if a thread gets to long it is interupdet/ended. Maybe a polled wait solves that behavor.

As far as i know there is no way to stop this in good way.

If you want it faster try this:

Code:
if ModuloInteger(idx, 6000) == 0 then
  call PolledWait(0.01)
endif


Depending on the situation: You realy should starting to use the GC it is alot faster that looping thrue 16000 vaules
 
I'm sure GC is fast, after all it was coded by well known professionals :shades:

I was only wondering why my copy/clear routines hang every time I need them to work over a large amount of data. It's undeniable that there's something on the system killing threads that expend too much time.

Anyhow, this faster way you proposed saves me time writing a couple of loops, but involves callings to other functions, thus I don't know if it's really faster.

Thanks anyway ;)
 
If you want to loop over 16384 values, then you should exitwhen idx >= 16383, because you start from 0. I know this doesn't have much to do with your question, but it's just a thought.

P.S. Why does Blizzard use JASS instead of Java or Python or C++ or some well-known programming language? It would make it a lot easier to program it.
 
ShaiTan-Enk said:
If you want to loop over 16384 values, then you should exitwhen idx >= 16383, because you start from 0
It starts from 0 and it loops exactly 16384 times.
Notice that the stuff is done after check the condition.
ShaiTan-Enk said:
P.S. Why does Blizzard use JASS instead of Java or Python or C++ or some well-known programming language? It would make it a lot easier to program it.
Sure, it will be easier (for gurus of C++) if they let us to code maps in C++
But JASS is simpler and it only allows us to do what Blizzard wanted.

Imagine that Blizzard let us code a map in C++.
In two days, more or less, it will be released the first virus for WC3 Maps
In one week, dozens of different virus will spread all over BNET
It might be disastrous! :eek:
 
That's true, but it would be so much fun - we would be able to do absolutely anything with the game :D
 
General chit-chat
Help Users
  • V-SNES V-SNES:
    Happy Friday!
    +1
  • The Helper The Helper:
    News portal has been retired. Main page of site goes to Headline News forum now
  • The Helper The Helper:
    I am working on getting access to the old news portal under a different URL for those that would rather use that for news before we get a different news view.
  • Ghan Ghan:
    Easily done
    +1
  • The Helper The Helper:
    https://www.thehelper.net/pages/news/ is a link to the old news portal - i will integrate it into the interface somewhere when i figure it out
  • Ghan Ghan:
    Need to try something
  • Ghan Ghan:
    Hopefully this won't cause problems.
  • Ghan Ghan:
    Hmm
  • Ghan Ghan:
    I have converted the Headline News forum to an Article type forum. It will now show the top 20 threads with more detail of each thread.
  • Ghan Ghan:
    See how we like that.
  • The Helper The Helper:
    I do not see a way to go past the 1st page of posts on the forum though
  • The Helper The Helper:
    It is OK though for the main page to open up on the forum in the view it was before. As long as the portal has its own URL so it can be viewed that way I do want to try it as a regular forum view for a while
  • Ghan Ghan:
    Yeah I'm not sure what the deal is with the pagination.
  • Ghan Ghan:
    It SHOULD be there so I think it might just be an artifact of having an older style.
  • Ghan Ghan:
    I switched it to a "Standard" article forum. This will show the thread list like normal, but the threads themselves will have the first post set up above the rest of the "comments"
  • The Helper The Helper:
    I don't really get that article forum but I think it is because I have never really seen it used on a multi post thread
  • Ghan Ghan:
    RpNation makes more use of it right now as an example: https://www.rpnation.com/news/
  • The Helper The Helper:
  • The Helper The Helper:
    What do you think Tom?
  • tom_mai78101 tom_mai78101:
    I will have to get used to this.
  • tom_mai78101 tom_mai78101:
    The latest news feed looks good

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top