Volatile or not ?

[quote] 106415 calls to sun.java2d.loops.Blit$GeneralMaskBlit::Blit(IntArgb, SrcOverNoEa, “Integer RGB DirectDraw”)
106415 calls to sun.java2d.loops.MaskBlit::MaskBlit(IntArgb, SrcOver, IntRgb)

These are the things that kill your performance. This is a software blit of a translucent buffered image to an accelerated image (backbuffer).

I see a couple of possibilites:

  • you have some sprites as bufferedImages for some reason (so they are not being accelerated)
  • you create more sprites that can fit in vram, some of them get accelerated, but most - don’t
  • you render to your sprites more often than you copy from them
    [/quote]
    Hey,
    i think the first possibility can be ruled out. Because on my every Image creation i am checking out whether they are accelerated after creation or not, and they all are.
    The second one might be true, since i am creating about 20 images to start with and create others on the fly (exlosions only).
    But apart from image i am creating other geometrical stuff all the time, about 100 geometrical things. Lets say i am creating about MAX 250 sprites. I dont think that is too much !! I have 32 Meg gfx card.
    One thing i think might be a problem is ur third possibility. I have put up a simple time bench on my updateEverything method and rendering method. This is what my console shows :
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 31
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Update() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Update() - 16
    Time Paint() - 16
    Time Update() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Update() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Update() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Update() - 15
    Time Paint() - 16
    Time Update() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Update() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Update() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Update() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 15
    Time Update() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 16
    Time Paint() - 15
    Time Paint() - 15

And my threaded loop is like : gameManager.update(); gameManager.paint(bufferedGraphics); bufferedGraphics.show();
Thread.currentThread().yield();
ual.sleep(gameManager.REFRESH_RATE);

What i am trying to show here is in my code i am trying to call my update() and paint() ONCE every refresh. But from my console i gather that my update method doesnt get called as often as my render(). Maybe because my sleep time is too short - like 10 millisecond.
:o

PS - Sorry for the long stupid looking post ;D

I hope you aren’t using System.currentMillis() for your bench. It’s slow and has a very low resolution.

So it cannot describe you the exact behavior of your program… :frowning:

[quote]I hope you aren’t using System.currentMillis() for your bench. It’s slow and has a very low resolution.

So it cannot describe you the exact behavior of your program… :frowning:
[/quote]
Yes, i am afraid i am. I will change it to Gage or other high rez timer and post the results.

[quote]I hope you aren’t using System.currentMillis() for your bench. It’s slow and has a very low resolution.

So it cannot describe you the exact behavior of your program… :frowning:
[/quote]
I know of the resolution issues on various OS’. But this is the first time I’ve heard someone say that it is slow. Can you give more details about that?

As far as time is concerned, on my 1300 Ghz processor, System.currentTimeMillis take up around 0.12us per call. This means around 150-160 processor cycles per call. If you consider that there is native call somewhere below, I think it is quite fast - in fact I doubt if you can get any of other timing routines to perform considerably faster.

For me 8.000.0000 calls per second is enough to not worry about performance implications. Resolution is terrible, but not the performance.