Menu

Cheated by fps counter?!

gsky916
2014-11-16
2014-11-17
  • gsky916

    gsky916 - 2014-11-16

    Yesterday i profiled dxwnd and d3dwindower, there are some differences between functions, but i dont think the differences could produce critical performance impact.
    What's more, in a full scope, the profiler shows dxwnd is a bit better than d3dwindower!(at least in the test case)

    That confused me, since d3dwindowder shows better fps count on the title, so i decide to use 3rd party fps counter(bandicam) to compare fps, the result is surprising. Please see the attached captures. D3Dwindower is same as the 3rd counter, but the dxwnd one shows great difference which is about half of the 3rd one!

    Please note this difference only occurs when UNCHECKED the AERO optimization flag(optimize for AERO mode). That's the mode that you should not do any stretch or filter operations. If CHECK the AERO optimization flag, dxwnd counter will be the same as the 3rd one.

    Now, let me draw an assumption:
    1) dxwnd counter is not accurate when AERO optimization flag UNCHECKED?
    2) In fact, dxwnd has a better performance than d3dwindower!

    BTW. Seems the "optimize for AERO mode" is a big performance killer, any idea to make it run faster?;)

     

    Last edit: gsky916 2014-11-16
    • gho

      gho - 2014-11-16

      It's not surprising me that FPS counters may differ significantly. The problem is that noone has ever defined exactly what a frame update is-
      What I say may seem a little confusing, since all the world is talking about FPS as if it was a very clear concept, but as a matter of fact, this is true only in the case the screen is updated periodically and in a unique, whole shot. This is not so uncommon (for instance, every fully 3D game is compelled to update the whole screen every time, because even the slightest change in the scene will impact on every pixel).
      The problem raises when you deal with some old-fashioned game in 2D or isometric style: for these games the developers often found very convenient to update the screen just as much and where it was necessary. So, at every game step, you have a small refresh in the life counter, a small one in the cursor area, another one regarding every cheracter mooving on the screen, and you refresh the whole screen just when scrolling the scene. Then, the difference between a game frame and the following could imply several smaller updates. But a tool like DxWnd could count every update and give you a very optimistic measure!
      In my opinion, this is why some games show a crazy and impossible frame counter.
      DxWnd introduced the "Updates bigger than 1/4 screen size" flag, to count in the FPS measurement just the bigger updates. But the point is this one: for a hooker like DxWnd or D3DWindower it is hard to tell what is a significant screen update, so there might be different counting schemas that lead to different measures: everything is arguable, but the human eye, that will hardly notice anything faster than its 20-30 Hz band, and in any case the monitor can't show anything faster than its refresh rate.

      So my point is this one:
      1) I trust very little the FPS measure, especially when compared between different measurement tools
      2) to my eye, the "optimize for AERO mode" improves the performances quite a lot, and usually the DxWnd FPS counter is telling so

      But after finishing the openmp stuff, I'll have a look at this again....

       
  • gsky916

    gsky916 - 2014-11-17

    1) I agree with you that comparison between different measurement tools are not reliable, that is why i introduce 3rd party counter.

    2) In this test case(wfsp) there should not exist any partial bilt issues, we are familiar enough with it. This time the facts are just the opposite. DxWnd gives out a very pessimistic measure(half of the 3rd counter).

    3) Now what confused me is the 3rd party counter seems always give out double fps than dxwnd when optimization flag is UNCHECKED, i doubt if the 3rd counter could correctly count dxwnd fps... If this turns out true, then this topic will become meaningless...

    UPDATE
    Finally i decide to trust my eyes, the result is very sad...
    There is a basic fact that wfsp player movement speed is related to the game fps. Higher fps moves faster..
    After comparison, it turns out 3rd counter could not correctly count dxwnd fps when optimization flag is UNCHECKED, FPS always doubled..

    My previous assumption is wrong..
    The conclusion is d3dwindower still runs faster than dxwnd, oh no!... :'(
    In my eyes, D3dwindower behaviors more like a virtual machine or a virtual desktop!

    4) optimize for AERO mode will reduce performance(it need to create an extra temp surface), i had compared with or with out it, DxWnd FPS counter is telling you will get a faster speed after uncheck it(of course you can not stretch resolution under this mode).

    5) A crazy Fps is meaningless, that is right...
    However consider filters like bilinear would consume them a lot, don't worry..the filter will eat up them...eat up! ;D

     

    Last edit: gsky916 2014-11-19

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.