PDA

View Full Version : ArmA2 FPS analyser - benchmarking tool



sbsmac
May 15 2010, 14:02
What is it ?

ArmaFPSAnalyser is a tool that can show you the performance of your game based on some specially-instrumented mission files. In addition, the scripts are available to allow you to create your own benchmark missions. The screenshot below gives you an idea of the kind of information the tool provides - in this example performance across three different kinds of location (city, coast and forest) is being compared. (In this case you can see quite clearly that performance of the 1.05 patch is poorer in city locations than elsewhere.)

http://www.armaleague.com/mac/ArmA2FPSAnalyser/analyser.jpg
How is this different to FRAPS or ArmaMark?

Most benchmarks show you an average fps (frames per second) reading and, if you are lucky, a minimum fps reading. The problem with these is that even the minimum fps number is an average across several frames. This is not a good approach for ArmA where the main issues seem to be around 'stutter'; ie, individual frames that take considerably longer than the ones before and after them. FPSAnalyser records the time taken for _every_ frame, as reported by the game and shows you the information in several different ways. It also uses a script-based approach to ensure that benchmarks are as repeatable as possible so you can truly isolate the factors that are affecting performance. Finally, the analyser allows you to plot multiple runs so you can directly compare benchmarks as you change settings.

How does it work ?

The scripts create a camera which flies between a set of markers. As this is happening, a loop within the scripts records the timestamp of each individual frame. After the run is completed, the result are written to your arma2.rpt file. The analyser is then reads out the results and plots them.

What does it all mean ?

Although the plots all show 'fps' it's important to realise that what is being plotted is actually 1/frame-duration for each and every frame. I've chosen to use this presentation rather than frame-duration because most people are a lot more comfortable with fps and have an inherent feeling for what is 'good'.

The simplest plot to understand is "FPS over time". This just shows the instantaneous fps for each frame during the course of the benchmark. You can see in this example plot that although most frames are at >20fps, there are some dips down to around 10 which will be perceived as stuttering.
http://www.armaleague.com/mac/ArmA2FPSAnalyser/FPSovertime.jpg

The '% time spent below framerate' plot shows the information in a slightly different way. Rather than plotting the frames in the order they occurred, it looks at the distribution of fps. The stuttering can be seen here as the circled 'tail' of low-fps frames.

http://www.armaleague.com/mac/ArmA2FPSAnalyser/fpscumulative.jpg

The auto-correlation plot shows the same information in yet another way - it shows the relationship of each frame to the frame immediately before it. A game that is running rock-solid at 60fps would show a very dense blob at the the top right this graph. A game where the frame-rate was varying smoothly will tend to cluster around a diagonal-line (shown in red in the example). If the framerate is varying wildly (ie stuttering) you will see 'outliers' such as those circled in orange. These are frames which have taken much longer to render than the frame immediately before them.

http://www.armaleague.com/mac/ArmA2FPSAnalyser/fpsauto.jpg


Installation
To install, download the archive from here. (http://dev-heaven.net/attachments/download/5876/ArmA2FPSAnalyser_v2.rar)

Run the setup utitility to install the analyser. Copy the benchmarks in the missions folder to your own ArmA2 missions directory.

How to use the tool – getting started
Run one of example benchmarks in ArmA2. After the camera has stopped moving you will see a report “LOG WRITTEN”. If you want to you can re-run the benchmark with different settings (eg, try changing the view distance or texture details).

Tab out of ArmA2 and start up the analyzer tool. By default it will display plots for the last benchmark you ran. You can compare several benchmarks together by using the Benchmarks->Add/Remove option.

You can give benchmarks useful labels using the Benchmarks->Details menu option. You will also see information here such as the aram2.exe build that was used and the startup parameters (very useful for comparing betas!)

IMPORTANT The analyser expects to see some header information written by ArmA (build id, startup parameters, resolution etc) so if you edit the rpt file by hand you can confuse it. If you want to start with a 'clean' rpt file, the best approach is just to delete it before starting ArmA.

Creating your own benchmarks.

The scripts (in the 'scripts' folder) make it very easy to create your own benchmarks. Just create a new mission in the editor and copy the init.sqf file and ctf folder into the mission folder. In the editor you will need to add some markers to tell the camera what route to follow. The markers need to be name fps_0,fps_1,fps_2 etc, as many as you want. You can control the way the camera behaves at each point by adding keywords to the marker text.

speed=N will change the speed of the camera when it hits this marker.
height=N will ensure the camera is at this height when it reaches the marker
target=x changes the direction the camera faces.
Target=next means that the camera will always face the next marker, ie it will look straight ahead
Target=player means that the camera will face the player
Any other value, eg target=zzz will cause the camera to face a marker of that name.

When developing new benchmarks you can temporarily disable logging using the nolog keyword. You can change the 'name' of the benchmark (which will be shown in the analyser) by placing text before the keywords.

Here's an example from the BM_cityRun benchmark...

http://www.armaleague.com/mac/ArmA2FPSAnalyser/fpskeys.jpg

Disclaimer

FPS is only one aspect of the game experience- this tool can't measure other issues such as lod pop-up. The tool almost certainly contains bugs. If you find one or have the tool crash, please report it here and I will try to fix it.

Sickboy
May 15 2010, 14:05
Totally awesome! Thanks

Mosh
May 15 2010, 14:07
Going to try it right now, thanks mac!

sbsmac
May 15 2010, 14:44
Here are some results I got from trying out 1.05 vs the latest beta (70313) with the various exThreads options. I was a bit surprised to find that 1.05 seems to have been the best performing...

http://www.armaleague.com/mac/ArmA2FPSAnalyser/fps_beta.jpg

qwertz
May 15 2010, 17:33
Awesome tool. Can I use this with other islands as well or is there any reason why that would not work ?

sbsmac
May 15 2010, 17:35
It will work with any island - just create a mission using the editor, drop the scripts in, and create a few markers as waypoints for the camera. If you have a any problems, drop me a line here and I will do my best to help out :)

Suma
May 15 2010, 19:35
It also relies on the accuracy of the underlying 'time' function from ArmA and it's unclear whether this is truly tied to the real-time-clock.

No, time is not tied to real-time clock. Sometimes it may differ significantly (an obvious example is time acceleration). To accommodate for benchmarking we have added following functions in ArmA 2:

diag_fps Returns average framerate over last 16 frames
diag_frameno Returns number of frame currently displayed
diag_fpsmin Returns minimal framerate. Calculated from the longest frame over last 16 frames
diag_tickTime Real time spent from the start of the game

sbsmac
May 15 2010, 20:17
*Edit* changed text after researching time vs diag_tickTime a bit more

Thanks Suma. I'd originally switched from diag_tickTime because I noticed it seems to be limited to 6 signifcant digits. Ie, past 1000 seconds, you only get 2 decimal places, ie a resolution of 1/100th second. Unfortunately, having just tested it, I notice that 'time' has the same issue, it's just less noticable because diag_tickTime counts from the time the game is booted whereas 'time' is reset at the beginning of the mission. I understand the affect of 'acctime' of course, and also notice that if the game is actually halted (eg, if it is dragged whilst windowed) 'time' is halted. Other than that is it an inherently unreliable measure ?

I'm inclined to switch to diag_tickTime for the scripts but am a little concerned about the loss of precision past 1000 seconds and particularly past 10000.

Of course, what would be _really_ useful would be a scripting command that returned the system time/tick value so that the traces could be correlated with external events. It would also be very nice to be able to read the graphics settings from in-game as well but I know you guys are busy ... ;-)

---------- Post added at 09:17 PM ---------- Previous post was at 08:54 PM ----------

Ah - just worked out that the restriction on significant digits is in the format/printing so using diag_ticktime with a zero-ing offset seems to be the best way to go. Will update the scripts and benchmarks shortly...

Mr Burns
May 15 2010, 20:33
diag_tickTime Real time spent from the start of the game

As much as i´m against any sort of achievements and their plain stupid over-employment in console games and their ports to PC´s, it´d be quite fun to have the arma editor monitor your on times (actually working, not idling) and saving it to some kind of hall of fame (of geeks) :D


Sorry for OT.

sbsmac
May 15 2010, 20:41
Missions and scripts updated to use diag_tickTime as per Suma's advice. Download link in first post updated, new download is http://dev-heaven.net/attachments/download/5876/ArmA2FPSAnalyser_v2.rar

Foxhound
May 15 2010, 21:02
Thanks for informing us about your work :cool:


Release frontpaged on the Armaholic homepage (http://www.armaholic.com/page.php?id=10507).


http://www.armaholic.com/datas/users/3-animation.png (http://www.armaholic.com/page.php?id=10506)
ArmA2 FPS analyser v2.0 (http://www.armaholic.com/page.php?id=10506)

Alex72
May 15 2010, 21:30
Brilliant work sbsmac! Time for a test-frenzy. :)

jpinard
May 16 2010, 01:52
Man you people are damn smart! :p Incredible tool.

langgis08
May 16 2010, 14:48
Thx very much for programming the Arma2FPS-Analyzer, the screenshots posted here look very good and sure give interesting feedback for all testers.

But I must be doing something wrong either in setup or in saving/getting back data / using the tool.

First of all this question: is it correct, that every time you want to use the tool you have to run setup.exe ? because I don't get info about any installation-path. so there isn't a resident .exe file except the setup.exe ?

my steps in detail:
-> I have copied the BM....pbo's in to Arma 2\missions\
-> I find these BM-missions in scenarios as expected and I can also run them
-> while running the BM-mission I have no other FPS-meter at OSD (I normally use FPS-meter of ATITrayTools)
-> the mission ends with the text '1-1-A 1 (langgis08) LOG SAVED'
-> I tab on desktop, let the tool's setup.exe (V2.0) run and ... I get a weird graph in "FPS over time": Y-Axis (fps) ranges from 0 to 80, x-Axis (time) ranges from 0 to 8889277 nearly totally blue as if all dots/pixels in the graph's area are set ... (?)
-> tried it with every BM-file, all the time same crazy results

here's the data logged in arma2.rpt (example):

=====================================================================
== C:\Program files\Bohemia Interactive\ArmA 2\beta\arma2.exe
== "C:\Program files\Bohemia Interactive\ArmA 2\beta\arma2.exe" -mod=beta -exThreads=3 -nosplash -world=empty
=====================================================================
Exe timestamp: 2010/05/11 19:05:37
Current time: 2010/05/16 11:27:03

Item str_disp_server_control listed twice
Exe version: 1.05.70313
["START FPS TRACE ",228.178,"city run"]
"LABEL city run"
25.039
25.095
25.149
25.201
25.258
25.316
25.371
25.423
25.48
25.535
25.591
25.645
25.7
25.755
25.812
25.867
25.928
25.986
26.042
26.102
26.158
26.218
26.274
26.33
26.389
26.443
26.501
26.553
26.609
26.699
26.759
26.817
26.873
26.929
26.987
27.038
27.104
27.16
27.219
27.274
27.335
27.394
27.447
27.507
27.569
27.627
27.686
27.742
27.805
27.861
27.921
27.982
28.039
28.098
28.155
28.211
28.273
28.335
28.389
28.447
28.515
28.581
28.645
28.706
28.768
28.83
28.89
28.946
29.004
29.061
29.117
29.176
29.235
29.295
29.353
29.407
29.465
29.527
29.582
29.638
29.687
29.745
29.798
29.852
29.905
29.955
30.009
30.058
30.1
30.162
30.218
30.262
30.308
30.351
30.401
30.438
30.546
30.653
30.702
30.745
30.794
30.835
30.883
30.921
30.957
31.013
31.052
31.111
31.17
31.219
31.277
31.323
31.37
31.417
31.465
31.511
31.558
31.601
31.666
31.713
31.754
31.817
31.857
31.909
31.953
32.008
32.042
32.095
32.143
32.184
32.227
32.272
32.316
32.36
32.401
32.455
32.5
32.549
32.602
32.644
32.681
32.73
32.77
32.815
32.857
32.911
32.952
32.996
33.038
33.066
33.125
33.166
33.214
33.249
33.29
33.325
33.361
33.4
33.441
33.481
33.529
33.57
33.611
33.67
33.708
33.75
33.792
33.837
33.877
33.919
33.961
34.006
34.045
34.086
34.131
34.175
34.218
34.259
34.298
34.342
34.384
34.433
34.473
34.514
34.556
34.598
34.641
34.682
34.722
34.765
34.807
34.848
34.888
34.927
34.971
35.013
35.053
35.093
35.132
35.175
35.22
35.263
35.301
35.339
35.379
35.422
35.464
35.505
35.544
35.587
35.63
35.672
35.714
35.752
35.796
35.838
35.879
35.918
35.959
36.009
36.048
36.099
36.149
36.19
36.233
36.275
36.317
36.359
36.4
36.441
36.485
36.527
36.567
36.607
36.657
36.699
36.739
36.801
36.845
36.893
36.936
36.975
37.018
37.054
37.092
37.131
37.178
37.217
37.257
37.301
37.351
37.389
37.429
37.467
37.509
37.552
37.587
37.626
37.668
37.705
37.748
37.79
37.831
37.875
37.925
37.969
38.02
38.062
38.117
38.161
38.212
38.259
38.311
38.355
38.411
38.457
38.503
38.561
38.617
38.658
38.717
38.781
38.827
38.884
38.944
39.001
39.049
39.105
39.147
39.204
39.251
39.307
39.352
39.409
39.469
39.519
39.572
39.673
39.726
39.777
39.822
39.879
39.929
40.036
40.096
40.15
40.219
40.28
40.327
40.379
40.426
40.469
40.515
40.563
40.613
40.654
40.704
40.749
40.796
40.838
40.892
40.931
40.984
41.023
41.075
41.113
41.175
41.209
41.271
41.307
41.37
41.402
41.475
41.511
41.57
41.61
41.669
41.71
41.773
41.822
41.868
41.912
41.961
42.016
42.114
42.163
42.211
42.264
42.357
42.409
42.465
42.514
42.56
42.61
42.654
42.707
42.753
42.806
42.851
42.896
42.937
42.992
43.033
43.077
43.126
43.169
43.216
43.255
43.308
43.352
43.393
43.441
43.479
43.532
43.575
43.625
43.663
43.724
43.764
43.827
43.859
43.923
43.962
44.012
44.052
44.101
44.138
44.19
44.237
44.284
44.332
44.38
44.426
44.477
44.52
44.585
44.623
44.664
44.732
44.773
44.836
44.876
44.927
44.969
45.02
45.065
45.109
45.149
45.205
45.261
45.304
45.357
45.407
45.448
45.499
45.544
45.58
45.637
45.686
45.735
45.779
45.825
45.87
45.922
45.964
46.006
46.052
46.097
46.141
46.181
46.227
46.274
46.318
46.368
46.412
46.452
46.503
46.544
46.593
46.64
46.686
46.727
46.781
46.826
46.873
46.934
46.976
47.077
47.153
47.195
47.246
47.289
47.34
47.386
47.435
47.484
47.521
47.598
47.647
47.706
47.743
47.811
47.853
47.903
47.947
47.996
48.038
48.145
48.186
48.241
48.289
48.336
48.375
48.434
48.473
48.522
48.572
48.614
48.662
48.71
48.757
48.802
48.847
48.89
48.939
48.976
49.048
49.087
49.143
49.196
49.237
49.289
49.34
49.381
49.423
49.492
49.528
49.584
49.623
49.676
49.715
49.819
49.858
49.897
49.939
49.98
50.019
50.062
50.106
50.144
50.184
50.23
50.272
50.313
50.352
50.391
50.449
50.495
50.535
50.577
50.637
50.672
50.728
50.769
50.821
50.87
50.913
50.955
51.003
51.044
51.099
51.146
51.205
51.26
51.308
51.359
51.406
51.458
51.505
51.552
51.598
51.644
51.679
51.741
51.789
51.837
51.877
51.936
51.978
52.031
52.063
52.129
52.172
52.213
52.26
52.303
52.339
52.394
52.436
52.492
52.543
52.598
52.653
52.696
52.755
52.797
52.853
52.898
52.953
52.995
53.056
53.102
53.151
53.196
53.249
53.287
53.349
53.39
53.449
53.492
53.54
53.588
53.639
53.689
53.732
53.779
53.832
53.879
53.931
53.974
54.03
54.085
54.129
54.195
54.235
54.298
54.339
54.389
54.442
54.488
54.537
54.576
54.636
54.677
54.78
54.839
54.893
54.948
54.999
55.039
55.079
55.13
55.175
55.219
55.262
55.311
55.356
55.402
55.44
55.487
55.526
55.586
55.617
55.69
55.727
55.778
55.816
55.856
55.903
55.945
55.984
56.021
56.065
56.104
56.148
56.19
56.229
56.272
56.313
56.355
56.395
56.435
56.477
56.519
56.561
56.602
56.639
56.681
56.725
56.765
56.81
56.857
56.892
56.932
56.976
57.013
57.054
57.101
57.141
57.183
57.229
57.267
57.315
57.354
57.395
57.443
57.48
57.526
57.572
57.611
57.651
57.69
57.738
57.775
57.818
57.869
57.912
57.976
58.02
58.066
58.109
58.177
58.231
58.279
58.314
58.364
58.418
58.465
58.508
58.561
58.6
58.645
58.7
58.736
58.792
58.847
58.881
58.941
58.976
59.012
59.051
59.11
59.151
59.215
59.263
59.307
59.351
59.396
59.449
59.496
59.549
59.588
59.639
59.686
59.777
59.851
59.898
59.943
59.979
60.028
60.064
60.114
60.155
60.197
60.237
60.269
60.327
60.368
60.4
60.436
60.491
60.523
60.56
60.606
60.641
60.669
60.706
60.752
60.789
60.824
60.853
60.897
60.928
60.957
60.987
61.024
61.069
61.11
61.151
61.19
61.229
61.271
61.31
61.352
61.391
61.438
61.468
61.508
61.537
61.587
61.623
61.661
61.691
61.729
61.764
61.797
61.828
61.857
61.907
61.946
61.996
62.022
62.07
62.11
62.167
62.202
62.254
62.282
62.353
62.391
62.44
62.474
62.522
62.565
62.607
62.652
62.694
62.743
62.783
62.829
62.877
62.917
62.965
63.01
63.056
63.088
63.144
63.181
63.239
63.274
63.33
63.373
63.417
63.463
63.5
63.574
63.603
63.663
63.698
63.761
63.796
63.853
63.894
63.958
63.997
64.052
64.094
64.143
64.181
64.234
64.28
64.331
64.37
64.425
64.464
64.524
64.565
64.61
64.662
64.708
64.745
64.806
64.848
64.906
64.949
64.995
65.032
65.087
65.123
65.191
65.23
65.286
65.326
65.391
65.438
65.48
65.532
65.576
65.637
65.683
65.737
65.779
65.831
65.886
65.925
65.981
66.019
66.08
66.117
66.179
66.232
66.282
66.331
66.389
66.434
66.486
66.539
66.583
66.643
66.685
66.737
66.776
66.829
66.869
66.932
66.973
67.012
67.06
67.104
67.148
67.194
67.228
67.291
67.325
67.391
67.433
67.493
67.536
67.582
67.626
67.674
67.716
67.767
67.818
67.858
67.91
67.951
68.003
68.038
68.101
68.144
68.194
68.236
68.288
68.33
68.38
68.419
68.475
68.519
68.567
68.605
68.668
68.713
68.755
68.806
68.847
68.896
68.939
68.988
69.025
69.083
69.122
69.184
69.225
69.277
69.311
69.364
69.406
69.45
69.496
69.537
69.577
69.63
69.679
69.725
69.772
69.826
69.87
69.948
70.044
70.101
70.15
70.199
70.246
70.328
70.428
70.475
70.538
70.629
70.675
70.787
70.839
70.886
70.936
70.983
71.037
71.084
71.137
71.186
71.235
71.286
71.339
71.384
71.439
71.499
71.549
71.602
71.647
71.696
71.74
71.841
71.94
71.99
72.043
72.094
72.142
72.189
72.234
72.282
72.328
72.376
72.429
72.47
72.511
72.561
72.604
72.663
72.706
72.752
72.797
72.844
72.889
72.933
72.977
73.02
73.065
73.112
73.155
73.199
73.246
73.293
73.34
73.381
73.426
73.473
73.52
73.564
73.608
73.651
73.698
73.744
73.789
73.833
73.875
73.922
73.964
74.015
74.058
74.102
74.148
74.195
74.241
74.287
74.332
74.379
74.426
74.473
74.519
74.559
74.607
74.652
74.699
74.744
74.797
74.842
74.887
74.938
74.981
75.029
75.073
75.117
75.164
75.208
75.254
75.304
75.351
75.398
75.444
75.489
75.535
75.581
75.626
75.671
75.721
75.767
75.816
75.862
75.908
75.961
76.007
76.061
76.106
76.155
76.197
76.239
76.286
76.332
76.374
76.419
76.466
76.515
76.557
76.615
76.657
76.714
76.759
76.807
76.849
76.901
76.949
76.994
77.049
77.096
77.145
77.19
77.241
77.284
77.339
77.384
77.427
77.487
77.528
77.591
77.637
77.684
77.73
77.783
77.916
77.975
78.032
78.088
78.143
78.26
78.311
78.366
78.424
78.475
78.528
78.644
78.7
78.764
78.817
78.876
78.936
78.992
79.046
79.101
79.149
79.2
79.248
79.296
79.349
79.394
79.453
79.499
79.568
79.614
79.663
79.711
79.763
79.817
79.861
79.92
79.968
80.01
80.062
80.11
80.154
80.208
80.261
80.307
80.361
80.407
80.464
80.516
80.561
80.616
80.668
80.713
80.758
80.812
80.86
80.91
80.947
81.008
81.05
81.097
81.142
81.196
81.234
81.291
81.335
81.388
81.431
81.492
81.54
81.587
81.656
81.705
81.759
81.806
81.853
81.902
81.953
82.011
82.066
82.118
82.184
82.234
82.292
82.344
82.394
82.441
82.491
82.541
82.594
82.651
82.704
82.75
82.805
82.865
82.911
82.98
83.025
83.076
83.125
83.174
83.223
83.272
83.322
83.37
83.421
83.474
83.523
83.57
83.616
83.668
83.71
83.759
83.801
83.854
83.898
83.952
83.992
84.055
84.101
84.15
84.196
84.247
84.294
84.338
84.385
84.433
84.477
84.52
84.568
84.613
84.659
84.705
84.75
84.796
84.845
84.887
84.946
84.994
85.045
85.096
85.144
85.186
85.235
85.283
85.33
85.372
85.434
85.483
85.529
85.579
85.627
85.677
85.726
85.773
85.819
85.859
85.909
85.954
86.003
86.054
86.11
86.154
86.21
86.252
86.293
86.341
86.397
86.448
86.489
86.536
86.582
86.621
86.671
86.706
86.761
86.805
86.854
86.886
86.955
86.99
87.051
87.09
87.147
87.186
87.244
87.287
87.342
87.379
87.437
87.481
87.531
87.57
87.639
87.685
87.744
87.788
87.841
87.904
88.047
88.103
88.16
88.22
88.265
88.33
88.37
88.497
88.609
88.657
88.699
88.742
88.793
88.823
88.895
88.932
88.993
89.03
89.097
89.146
89.199
89.25
89.298
89.352
89.397
89.449
89.499
89.54
89.579
89.618
89.758
89.799
89.847
89.884
89.951
89.984
90.061
90.098
90.149
90.183
90.243
90.29
90.408
90.455
90.506
90.558
90.609
90.721
90.851
90.965
91.018
91.066
91.113
91.164
91.209
91.266
91.322
91.371
91.418
91.465
91.513
91.556
91.612
91.654
91.706
91.756
91.803
91.856
91.906
91.959
92.018
92.073
92.132
92.185
92.241
92.298
92.352
92.404
92.455
92.511
92.564
92.617
92.67
92.731
92.785
92.846
92.897
92.95
93.005
93.06
93.105
93.155
93.2
93.252
93.3
93.348
93.397
93.438
93.496
93.542
93.585
93.631
93.672
93.719
93.76
93.81
93.849
93.899
93.939
93.988
94.034
94.072
94.124
94.164
94.214
94.258
94.309
94.352
94.394
94.439
94.482
94.528
94.567
94.624
94.671
94.712
94.756
94.824
94.875
94.921
94.959
94.999
95.05
95.092
95.137
95.176
95.223
95.264
95.311
95.352
95.393
95.451
95.49
95.544
95.585
95.634
95.673
95.723
95.765
95.815
95.871
95.918
95.962
96.008
96.05
96.1
96.133
96.19
96.233
96.277
96.333
96.379
96.427
96.482
96.528
96.578
96.62
96.671
96.724
96.769
96.816
96.871
96.911
96.964
97.014
97.055
97.112
97.153
97.207
97.243
97.37
97.414
97.458
97.506
97.54
97.602
97.646
97.686
97.748
97.789
97.841
97.876
97.941
97.974
98.03
98.068
98.126
98.161
98.211
98.25
98.307
98.345
98.399
98.446
98.489
98.541
98.576
98.636
98.677
98.727
98.766
98.822
98.854
98.914
98.956
99
99.055
99.096
99.133
99.194
99.238
99.279
["END FPS TRACE"]


so what am doing wrong ?
OS: XP 32, SP3

sbsmac
May 16 2010, 15:44
>First of all this question: is it correct, that every time you want to use the tool you have to run setup.exe ?

No - after you have run setup.exe once, you will find the analyser under start/all programs/armafpsanalyser :-) Apart from that, everything is fine (and you shouldn't be breaking anything by running setup twice - it's just unnecesary).

I just tried the example data you sent and got a sensible output. Can you do the following ?

1) rename your arma2.rpt to oldarma2.rpt
2) Run another benchmark.
3) Start the analyser

If you still get garbage output, could you send me the new arma2.rpt file by email or stick it on download site somewhere and I will take a look at what is going on. If the problem has magically fixed itself, could you send me the oldarma2.rpt file instead ? I suspect a parsing error - possibly due to stoppring a benchmakr during its output phase but only the complete file will tell.

thebarricade
May 16 2010, 16:28
Seems to be a nice program, but I can't get it to work on my pc (Vista 64).

It fails with the following:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseSingle(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Single.Parse(String s, NumberStyles style, NumberFormatInfo info)
at WindowsFormsApplication1.Trace.readSubTrace(StreamReader sr)
at WindowsFormsApplication1.Trace.read(StreamReader sr, Session ses, Int32 n)
at WindowsFormsApplication1.Session.read(StreamReader sr)
at WindowsFormsApplication1.Rpt.read(StreamReader sr)
at WindowsFormsApplication1.Form1.Form1_Shown(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnShown(EventArgs e)
at System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallbacks()


************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4200 (NetFxQFE.050727-4200)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
ArmA2FPSAnalyser
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/Gamer/AppData/Local/Apps/2.0/OOC88DV6.TLV/62Y8E0EN.N0O/arma..tion_3f34483d80f35235_0001.0000_3410d77d693b9589/ArmA2FPSAnalyser.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.DataVisualization
Assembly Version: 3.5.0.0
Win32 Version: 3.5.30729.116
CodeBase: file:///C:/Users/Gamer/AppData/Local/Apps/2.0/OOC88DV6.TLV/62Y8E0EN.N0O/arma..tion_3f34483d80f35235_0001.0000_3410d77d693b9589/System.Windows.Forms.DataVisualization.DLL
----------------------------------------
Accessibility
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4016 (NetFxQFE.050727-4000)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
System.Core
Assembly Version: 3.5.0.0
Win32 Version: 3.5.30729.1 built by: SP
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.


Any idea on what could be causing it?

Thanks in advance, Anders

sbsmac
May 16 2010, 16:30
It looks like it doesn't like the format of a floating point number in your rpt file - could you send me a copy ?

Alex72
May 16 2010, 17:13
Got some time to test this now, but i get the same problem as TheBarricade. When i try to start your app after running a bench an error notice come up with the exact same content as above. Initial run after install works ok.

Win7 64bit. Maybe a 64bit issue?

sbsmac
May 16 2010, 17:15
Hmm - not sure but if you could send me your arma2.rpt file I will take a look. Probably something simple in the parsing.

langgis08
May 16 2010, 17:28
hi sbsmac,

just sent you 2 files via email: arma2.rpt and screenshot.jpg of analyser output

sbsmac
May 16 2010, 18:40
Ok, I have fixed one problem - possibly the one affecting Alex and thebarricade. The issue occurs when you start ArmA then tab out and manually edit your rpt file. The problem is the analyser expects to see some information output by ArmA (build id, startup parameters, resolution etc) so if this is missing it can get confused.

I've added some code to display an error message if this condition is encountered. The app will automatically update next time you start it.

I'll also update the instructions on the front page.

Langgis - sorry I am still mystified by your problem since the rpt file loads fine here. I'll look at adding some debug later.

Alex72
May 16 2010, 19:09
I did not remove anything from the RPT the first time i tested it though. It was only in the test i sent to you (RPT). But ill test this one.

Thanks.

gonk
May 16 2010, 19:09
great tool sbsmac... I just need a AI benchmark mission and that should cover most scenarios. Might give it a crack on my days off...

sbsmac
May 16 2010, 19:31
Thansk ALex - there could be more than one issue here so if you still have problems send me the new rpt.

langgis08
May 16 2010, 19:33
-> I tab on desktop, let the tool's setup.exe (V2.0) run and ... I get a weird graph in "FPS over time": Y-Axis (fps) ranges from 0 to 80, x-Axis (time) ranges from 0 to 8889277 nearly totally blue as if all dots/pixels in the graph's area are set ... (?)
-> tried it with every BM-file, all the time same crazy results

For all that have the same problem: sbsmac found out that it's because of the different floating point standards "." (mostly US/UK) instead of "," (mostly German). That's why my data mentioned above went astronomical high and made the output worthless. sbsmac changed in the "german" .rpt the "x.y" into "x,y" and now I have sensible output in the analyzer.
Thx so far @<hidden> :)

sbsmac
May 16 2010, 20:03
Great. thanks langgis. I will update the tool shortly.

Old_Painless
May 16 2010, 21:33
Hello, this seems like a very promising tool! I just tried it, though, and ran into problems. I downloaded the archive and ran setup, I then got that the Analyzer app was installed.

I copied the 3 BM-missions to the Missions folder and started up Arma2 with no shortcut, just doubleclicked the exe. I selected the city run mission. From there on I just got "Receiving ..." on a black screen for like 20 minutes. After pressing escape I CTD'ed.

Any advice, please?

Cheers,
OP

EDIT: Got it working - restarted the PC, that helped.

sbsmac
May 16 2010, 22:08
I've updated the tool to hopefully work correctly in regions (such as parts of Europe) where floating point numbers don't normally have the form "1.23". I think this should resolve the problems seen by thebarricade, langgis08 and alex72.

The tool should automatically update next time you start it.


OldPainless - do you get this problem all the time? I've occasionally had missions that acted like that but it doesn't seem to be reproducible. If you are still seeing it, I would be interested to send you some test missions to try to narrow it down.

Old_Painless
May 16 2010, 22:12
Thanks, I've got it working now. Just had to reboot my system.

On another note, I wanted to delete the rpt file before trying it out as you recommend. Where is that usually located, I searched quite a bit for it?

-OP

sbsmac
May 16 2010, 22:15
It depends on what your OS is.

For Vista it is under C:\Users\<your login name>\appdata\Local\ArmA 2\arma2.rpt

Sorry - I can't remember where it is for XP or Win7.

Old_Painless
May 16 2010, 22:19
Aha, brilliant. Found it :)

Will try it out now with a clean rpt file. As for usage, you say that we should keep Arma2 running, Tab out of it and run the tool. Will the tool not work if we close down Arma2 and then run the tool?

sbsmac
May 16 2010, 22:21
Yes - it will work if you shut down ArmA2 first. In fact that's a better way to do it :-)

Old_Painless
May 16 2010, 22:21
OK, Cheers.

Suma
May 17 2010, 06:46
I understand the affect of 'acctime' of course, and also notice that if the game is actually halted (eg, if it is dragged whilst windowed) 'time' is halted. Other than that is it an inherently unreliable measure ?

Yes, it is inherently unreliable. There are other edge causes besides of time acceleration. One case which is of particular importance here (and which was the reason why we added the new functions while developing internal automatic fps testing) is time is unreliable once game fps is low. The problem is once simulation is using all available CPU power and running on the largest possible time delta, there is no way game time could keep up with the real world time and game time must be slowed down. In practice this means that once the game is running under ~10 fps, the game time will be running slower, therefore if you use it for bechmarking, the fps will be seemingly higher than it really is.

sbsmac
May 17 2010, 06:58
Thanks Suma, I really appreciate the information. Benchmarks have now been modified to used diag_ticktime so should be more accurate.

Sickboy
May 17 2010, 07:09
What I would be interested in would be measuring the current load of scripting engine, to measure the performance of the running scripts.
I'd want to use it to make simple comparisons between vanilla, cba, cba+ace, aswell as compare different versions / different systems on / off, in different situations, to measure the effect these scripts have on the performance and especially delays.

Since the spawned scripting is now scheduled, FPS is no measurement for it, maybe it is something your tool could support, or if anyone has some ideas on how to accomplish this?

sbsmac
May 17 2010, 08:39
That's an interesting idea Sickboy. Unfortunately it's usually very difficult to measure overall scheduler load from within a scheduled thread ! What you really need to do is read the start and end time of each scheduler slice but it's impractical to do this from within the scripting environment - there isn't any way to force the execution of code at the beginning and end of a slice. What might work would be if a new diag function was added...

diag_TimesliceInfo - the return value would be an array containing the start and end timestamps of the previous timeslice, eg [5.678,5.683]. Alternatively, the return value could just be the duration but I prefer to see start and end.

If that was available, it would be very easy to plot script usage in a number of ways.

As a poor substitute, it is already possible to measure individual script performance by adding diagnostics at the start and end of the script and I could easily modify the tool to allow this to be output and plotted. The drawback is that any system of scripts complex enough to be interesting is also complex enough that instrumenting it completely is impractical.

Let me have a think on it... :)

*Edit* What would simplify the above problem is something like diag_scriptTimes where the return value is an array of script handles and duration used during the previous timeslice.

Even this isn't perfect - there is a chance that the monitor script will not get the opportunity to run during any given timeslice but this condition could be detected by including a timeslice-id in the results array. I'll put some more thought into this and raise a CIT ticket.

sbsmac
May 17 2010, 11:27
Here's a mock-up of what it could look like (with randomly-generated data in this case).


http://www.armaleague.com/mac/ArmA2FPSAnalyser/scripttimes.jpg

Alex72
May 17 2010, 15:01
Thank you sbsmac for the fix. All good now.

Could you expand the highest FPS value in the charts? 100FPS is max and it seems i have dots in those highest values wich could/should mean i had higher FPS than that. Could be nice to see maximum. Maybe 200FPS could be maximum? Thinking of own benchies people will make where you do flying higher up. That gives me sometimes ~200FPS.

EDIT: When i did another run with different settings i noticed that the first run has the same time stamp as the last one so its hard to know wich is wich. I know from the numbers #1 and #2 of course but with a bunch it will get harder. So every bench has the same time stamp wich is from the last run. Could be nice if that is fixed. I also noticed that the second run where i upped the settings a bit took the highest FPS value in the windows down to 80 - even when i select the first run only wich was above 80FPS in the peaks.

Will be on MSN later if you want better explanations. Thanks again for creating this. Much appreciated tool.

sbsmac
May 17 2010, 15:45
Alex, you can use the View->Zoom->Custom to set the maximum fps on the graphs. It never occurred to me that people were likely to get over 100fps ! ;-)

The timestamps are generated from the 'session', ie the time at which you started ArmA2. Unfortunately there is no way from within a mission to directly get the system time, hence the #1,#2 etc (Actually, thinking about it I might be able to do something to calculate the time of the benchnmark using diag_ticktime as an offset from the session time.) Anyway... if you go to the benchmarks->details page, you will see a text-edit box called 'label' and you can use this to assign more meaningful labels to particular benchmark runs.

>I also noticed that the second run where i upped the settings a bit took the highest FPS value in the windows down to 80 - even when i select the first run only wich was above 80FPS in the peaks.

That seems a bit strange - I will take a look to see if there is a bug there.

thebarricade
May 17 2010, 16:10
Work perfectly now!

Thank you for a great program,
Anders

langgis08
May 17 2010, 17:11
[sbs]mac, great work
thx a lot for fixing regions-floating-point-problem in today's update,
it runs fine, now also for the ","-countries ;)

langgis08
May 17 2010, 19:35
the tool ran several times very fine, but now I get this one with startup (OS = xp 32 sp3):


System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
bei WindowsFormsApplication1.Form1.Form1_Shown(Object sender, EventArgs e)
bei System.Windows.Forms.Form.OnShown(EventArgs e)
bei System.Windows.Forms.Form.CallShownEvent()
bei System.Windows.Forms.Control.InvokeMarshaledCallbackDo(ThreadMethodEntry tme)
bei System.Windows.Forms.Control.InvokeMarshaledCallbackHelper(Object obj)
bei System.Threading.ExecutionContext.runTryCode(Object userData)
bei System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
bei System.Windows.Forms.Control.InvokeMarshaledCallback(ThreadMethodEntry tme)
bei System.Windows.Forms.Control.InvokeMarshaledCallbacks()


************** Geladene Assemblys **************
mscorlib
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3603 (GDR.050727-3600).
CodeBase: file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------
ArmA2FPSAnalyser
Assembly-Version: 1.0.0.0.
Win32-Version: 1.0.0.0.
CodeBase: file:///C:/Dokumente%20und%20Einstellungen/Tom/Lokale%20Einstellungen/Apps/2.0/BJQG7KNC.7MK/0P2HDRO5.M5L/arma..tion_3f34483d80f35235_0001.0000_360d166b604c7a09/ArmA2FPSAnalyser.exe.
----------------------------------------
System.Windows.Forms
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
----------------------------------------
System
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
System.Drawing
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
----------------------------------------
System.Windows.Forms.DataVisualization
Assembly-Version: 3.5.0.0.
Win32-Version: 3.5.30729.116.
CodeBase: file:///C:/Dokumente%20und%20Einstellungen/Tom/Lokale%20Einstellungen/Apps/2.0/BJQG7KNC.7MK/0P2HDRO5.M5L/arma..tion_3f34483d80f35235_0001.0000_360d166b604c7a09/System.Windows.Forms.DataVisualization.DLL.
----------------------------------------
Accessibility
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll.
----------------------------------------
System.Core
Assembly-Version: 3.5.0.0.
Win32-Version: 3.5.30729.1 built by: SP.
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll.
----------------------------------------
mscorlib.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3603 (GDR.050727-3600).
CodeBase: file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll.
----------------------------------------
System.Windows.Forms.resources
Assembly-Version: 2.0.0.0.
Win32-Version: 2.0.50727.3053 (netfxsp.050727-3000).
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
----------------------------------------

************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

Zum Beispiel:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht in diesem Dialogfeld behandelt.


uninstalled, reinstalled, renamed/removed/deleted .rpt, nothing helps atm

sbsmac
May 17 2010, 19:39
Hmm- you may see a file in the same directory as arma2.rpt called 'FPSlabels.txt'. This file contains the labels you apply to traces in the 'details' dialog. Can you try renaming this file to something else and see if you still get the error? If the error goes away, can you send me the contents of the labels file - it's possible it has become corrupted.

langgis08
May 17 2010, 19:47
FPSlabels.txt seems to be corrupt, because without or renamed analyser works fine again.

Maybe I did wrong labelling ?

btw. I sent you the corrupted file

sbsmac
May 17 2010, 19:55
The contents look fine - my best guess atm is that for some reason the tool couldn't open the file for read access. Can you try creating a new fpslabels.txt and pasting the contents of the old one into it ?

langgis08
May 17 2010, 20:17
did it with notepad, pasted content of 'corrupted' in it and same error :-)
so the content itself must be the problem ...
I just played around in a known good FPSlabels.txt with notepad and filling text randomly with many other different keys - like a monkey playing piano ;-)
nothing, the good .txt remains good, analyser runs like it should ...

the trouble's just with the file I sent you :rolleyes:
to be more precise: the trouble's just with the CONTENT of the file I sent you

could it be that: I just opened the corrupted file in notepad again and pressed right-arrow-key and watched the cursor ... after the last text-line ('inland flight 70313 exthreads3') it stops after letting one line blank. in a good file there's no blank line after the last text-line. you can see this in notepad also by marking all text. very funny, indeed.

like that:

bad:
...
inland flight 70313 exthreads3

<cursor stops here>

good:
...
inland flight 70313 exthreads3
<cursor stops here>

sbsmac
May 17 2010, 22:30
Good catch - the problem is with the extra blank line at the end of the file. I'm not sure how it got there but delete that and things should be fine. I'll take a look tomorrow at how the problem might be occurring.

langgis08
May 18 2010, 06:41
thx for your job, sbsmac

in the meantime I found out 2 ways to get the problem solved:
1) deleting/renaming FPSlabels.txt (data will still be visible with "default"-labels made by analyser itself)
2) deleting the blank line in an editor, like you suggested

the problem is not really serious or urgent, because it can be fixed - as I know now - very quick and it's no showstopper at all. it might just be 'annoying' for someone who don't know what it is (like me, when I recognized it).

Unfortunately, I can't reproduce the error and so I cannot say how the blank line smuggled itself in the end of file (the text-line in the "Details" where you can type the label(s) seems to be stable, for example typing "return" doesnt create that blank line)

I'm off for work now, sya :)

sbsmac
May 28 2010, 07:48
This post (http://forums.bistudio.com/showpost.php?p=1636277&postcount=107) shows some pretty startling differences between performance with hyperthreading enabled and disabled on an i920. Quad-core owners should definitely disable hyperthreading or use "-cpuCount=4"

Batstat
May 30 2010, 14:12
Great app sbsmac. Tips, the correct rpt file would not be found if the user start arma with -profiles=drive:\dir\dir... in his shourcut.
Serveral ways to fix this,
a) put the info in the readme (ask user not to use -profiles), or tell him to manually copy the rpt file after the benchmark is run to ...AppData\local\arma 2\
b) Give the user the option where he can drag his shortcut to a dockable surface in your application. Then read the -profiles variable and maybe more info about how the game was started. Not sure if this is doable if the user often switch between different shortcuts (how to correlate, the shortcuts with the correct results - dunno)
c) Give the user a way to tell where the rpt file should be read from.

regards

sbsmac
May 31 2010, 16:24
Thanks Batstat. Actually I have a few improvements in mind which will solve this problem as well. Watch this space... :-)

Batstat
Jun 8 2010, 14:14
Mission creep or new request?
Yesterday I encountered that my RPT file probably are under a round robin regime. All my Arma2fps numbers was gone.

Could you save the fps data in another file aka fslabels? Then I can compare my new settings with old one, without doing the measurement twice?

Regards
Batstat

sbsmac
Jun 8 2010, 14:20
Just working on it now ;-)

sbsmac
Jun 11 2010, 19:34
There is a new version now available. This adds the ability to batch-run large numbers of benchmarks with different parameters.

Database->Run Benchmarks...

http://www.armaleague.com/mac/ArmA2FPSAnalyser/pictures/runscreen.JPG

Select the parameters you are interested in varying (for example, you might want to see how view-distance affects performance or whether the latest beta peforms better than an earlier release) the choose 'Run' to spawn arma2 with all the combinations of selected parameters. This can take some time so you might want to do this overnight ! (Make sure you shutdown any background programs and ensure your virus scanner will not start its scheduled scan half way through the run !)

After you have run benchmarks, you can 'explore' the database of results using the 'Database->explorer' menu option. By default, all results in the database are shown but you can use the sliders to scroll through different values to get a feel for how they affect performance.

For example, you can see here the affect of changing cpuCount from 4 to 8 (conclusion: Hyperthreading is very bad for performance)

http://www.armaleague.com/mac/ArmA2FPSAnalyser/pictures/cpu.gif

Here is the affect of chaning the -exThreads option:
http://www.armaleague.com/mac/ArmA2FPSAnalyser/pictures/exthreads.gif

You can quickly take screenshots using the Screenshot menu item or create an animated gif (like those above) from a sequence of screenshots. Screenshots and gifs are stored in your 'My Pictures' folder.

---------- Post added at 08:34 PM ---------- Previous post was at 08:30 PM ----------

Note, the new database is separate from any previous benchmarks you may have run and I'll soon remove the previous ability to run benchmarks outside of the tool.

Dwarden
Jun 11 2010, 20:13
sbsmac ... very nice ...

yet , could you please add some more options? :)

for ARMA2.cfg:

HDRprecision=8;
(default 8, applicable are 16 and 32, usually higher value improves slightly the visual (HDR) while lowers performance)

GPU_MaxFramesAhead=1000;
(default is 1000; driver default is usually 3, driver or manual change in ARMA2.cfg there to 2,1,0 may improve performance/smoothness)

sbsmac
Jun 11 2010, 20:31
HDRprecision=8;
(default 8, applicable are 16 and 32)


Will do. At the moment, the value from Arma2/arma2.cfg is used.


GPU_MaxFramesAhead=1000;
(default is 1000; driver default is usually 3, driver or manual change in ARMA2.cfg there to 2,1,0 may improve performance/smoothness)

What is the interaction with "GPU_DetectedFramesAhead" ? Does Arma use MIN(GPU_MaxFramesAhead,GPU_DetectedFramesAhead) ?

And one quick question which would help a bit with skipping combinations that have already been tested in previous sessions.... Is there a quick way to extract the build-id from an arma2.exe binary without having to launch it and grep the value from the rpt file ?

---------- Post added at 09:31 PM ---------- Previous post was at 09:23 PM ----------

*Edit* Grepping for BuildMapID and VersionMapID seem to be the way to go. :)

Dwarden
Jun 11 2010, 20:51
GPUdetectedFrames is value detected from drivers, it most of time is correct but it might be wrong ...
it's write only (engine writes it to arma2.cfg as detected)

also GPU_MaxFramesAhead range is 0 to 1000, yet 0 can cause unforseen problems like crashes, so better put some warning on that value

sbsmac
Jun 11 2010, 21:17
also GPU_MaxFramesAhead range is 0 to 1000, yet 0 can cause unforseen problems like crashes


It sounds the useful set of values is really just [1,2,3,1000] with 1000 simply acting as a way to say 'as many as the GPU will support'?

The reason I'm asking is that I'd prefer to use a checkedListBox as with the other options so don't particularly want to offer the freedom for the user to enter any value up to 1000 unless it truly makes a difference to performance.

When I previously had problems with mouse-lag I modified the render-ahead setting in the driver without touching GPU_MaxFramesAhead and it solved the problem implying that the driver setting takes priority over the cfg-setting. I'm therefore a bit suspicious that there is a variable here which I can't actually control or read and this might invalidate some of the results unless people take care.

Dwarden
Jun 11 2010, 21:47
offer 0,1,2,3,4,5,1000 and i think that's enough for everyone :)

the cfg there takes over the driver settings in terms if you define in drivers 2 and here 1 the 1 will be used ...

ofcourse this may vary depending on what drivers allow etc.

p.s. would be also worthwhile report somewhere for the graph what's detectedGPUmaxframesahead ;)
just as info

sbsmac
Jun 11 2010, 22:30
Excellent - will work on this over the weekend.

Amateur
Jun 12 2010, 09:29
"Run Benchmarks" seems not working for me. When I click "Run" - nothing happens. Could it be because of non-default location of my arma2.exe?

sbsmac
Jun 12 2010, 10:46
Actually it's a bug which I'm working on now. Should have a fix shortly.

---------- Post added at 11:46 AM ---------- Previous post was at 11:38 AM ----------

*Edit* Should now be fixed. Restart the application to update.

Amateur
Jun 12 2010, 11:13
[/COLOR]*Edit* Should now be fixed. Restart the application to update.
Nothing changed :( Pressing "Run" causes nothing, exept of progress bar...

sbsmac
Jun 12 2010, 12:23
Ooops - that was a bit embarrassing, I forgot to remove some debug code which would have prevented anything being run. Anyway, new version uploaded.

Changes:-

* HDR and MaxFramesAhead supported as requested by Dwarden
* "Run Benchmarks" now avoid re-running benchmarks that are already in the database.
* You can hover the mouse over a line on the graph to get a tooltip showing the settings for that run (settings common to all runs on a graph are not shown).

http://www.armaleague.com/mac/ArmA2FPSAnalyser/pictures/tooltip.jpg

MJK-Ranger
Jun 12 2010, 15:13
Hi and it required Microsoft .NET Framework 4
Download here: http://www.microsoft.com/downloads/details.aspx?FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992&displaylang=en

Cheers

sbsmac
Jun 12 2010, 15:13
Affect of changing HDR... The main hit appears to be in going from 16 to 32 rather than 8 to 16..
http://www.armaleague.com/mac/ArmA2FPSAnalyser/pictures/hdr.gif

GPU_MaxFramesAhead - not much difference between settings although GPU_MaxFramesAhead=1 seems very slightly better (though might just be normal variation in measurement). If anything I would have thought larger values of MaxFramesAhead should give better framerates ?

http://www.armaleague.com/mac/ArmA2FPSAnalyser/pictures/FramesAhead.gif

MJK-Ranger
Jun 12 2010, 16:09
hmm i can't run the "run benchmark" got some error:

See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.IO.FileNotFoundException: Could not find file 'C:\.ArmA2Profile'.
File name: 'C:\.ArmA2Profile'
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.StreamReader..ctor(String path, Boolean detectEncodingFromByteOrderMarks)
at Mac.ArmA.Profile.Read(String path)
at Mac.ArmA.ArmA2..ctor()
at ArmA2FPSAnalyser.Form5..ctor(String home)
at ArmA2FPSAnalyser.Form1.runBenchmarksToolStripMenuItem_Click(Object sender, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
System
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
ArmA2FPSAnalyser
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/bjoern/AppData/Local/Apps/2.0/AD5N117L.V77/Q0A5XHQ8.GRD/arma..tion_3f34483d80f35235_0001.0000_31449b47eaffb989/ArmA2FPSAnalyser.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Accessibility
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
System.Windows.Forms.DataVisualization
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.DataVisualization/v4.0_4.0.0.0__31bf3856ad364e35/System.Windows.Forms.DataVisualization.dll
----------------------------------------
System.Core
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Data
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Xml
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
mac.Arma
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/bjoern/AppData/Local/Apps/2.0/AD5N117L.V77/Q0A5XHQ8.GRD/arma..tion_3f34483d80f35235_0001.0000_31449b47eaffb989/mac.Arma.DLL
----------------------------------------
mac.XML
Assembly Version: 1.0.0.0
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Users/bjoern/AppData/Local/Apps/2.0/AD5N117L.V77/Q0A5XHQ8.GRD/arma..tion_3f34483d80f35235_0001.0000_31449b47eaffb989/mac.XML.DLL
----------------------------------------
System.Web
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 built by: RTMRel
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Web/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Web.dll
----------------------------------------
System.Configuration
Assembly Version: 4.0.0.0
Win32 Version: 4.0.30319.1 (RTMRel.030319-0100)
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
Gif.Components
Assembly Version: 0.0.0.1
Win32 Version: 0.0.0.1
CodeBase: file:///C:/Users/bjoern/AppData/Local/Apps/2.0/AD5N117L.V77/Q0A5XHQ8.GRD/arma..tion_3f34483d80f35235_0001.0000_31449b47eaffb989/Gif.Components.DLL
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

PS! I'm running Windows 7 Professional x64 and .Net Framework 4.0.30319.1

sbsmac
Jun 12 2010, 16:27
it's having difficulty finding your current ArmA2 profile file. A couple of questions..

1) What OS are you using ?
2) Does your user-name have lots of strange non-alphabetic characters in it ? If so, you could try creating a user-profile with a very simple name like "test" and see if that helps.

MJK-Ranger
Jun 12 2010, 16:47
Hi.

1: I'm running Windows 7 Professional x64 and .Net Framework 4.0.30319.1

2: My ingame username is +Bjørn+

I'm gonna install your app again and make a new simple username and test it then.

Thanks :)

---------- Post added at 18:47 ---------- Previous post was at 18:40 ----------

Hi again. :)

Yes the problem was my username in arma2. I made a new one called fpstest and no problem now :D

Thanks :)

sbsmac
Jun 12 2010, 19:11
Thanks - that's useful information. The problem occurs because ArmA stores your user name in the registry as a UTF-8 string but creates a directory loosely based on the URL encoding of the name. So if you look in your "ArmA2 Other Profiles" directory you will sometimes see folders that look like '!%22%c2%a3$%20%20player%20@<hidden>{}%60' Unfortunately the encoding is not exactly the same as URL encoding and I haven't yet figured out quite what the algorithm is which is why sometimes the program can't find a match between the username in the registry and the folder in the profiles directory.

The workaround is to create a very basic default profile but I'd be interested to hear form other users whose profile names aren't correctly identified.

*Edit* Updated the program to report this error more clearly.

Amateur
Jun 12 2010, 20:58
"Run Benchmarks" works, but now when I try "Explore..." - app crashes with http://paste.org.ru/?zmbfar (sorr, log is partially in russian).

sbsmac
Jun 12 2010, 21:17
Possibly an error in one of the rpt files. What would be useful is if you could zip up the contents of your Documents/Arma2FPSAnalyser folder and post a link to the archive. Alternatively, there may be an issue with the globalisation - could you let me know what language you are using on your machine (I'm assuming russian!).

Finally, any chance you could translate the russian for the first 4 or 5 lines of the log you posted ?

Thanks.

Amateur
Jun 13 2010, 19:12
Was some bug with rpts, I've cleaned "results" folder and started benchmarks again - now it works.

sbsmac
Jun 13 2010, 21:39
Any chance you still have the 'broken' rpt available ? I'd like to improve the error-handling if possible.

Dwarden
Jun 17 2010, 12:20
and another round of suggestions

1. add -maxmem= commandline paramer
range 256 to 2047 now , because now it starts to play bigger role than before
i updated it's description on BIKI http://community.bistudio.com/wiki/Arma2:_Startup_Parameters#Performance

2. add -nosound commandline parameter
helps to determine how big/neglible is CPU hit caused by sound processing
(plays bigger role for future with OA)

3. add -window commandline parameter
to test differences between windowed and fullscreen mode

well that's enough for this round :bounce3:

sbsmac
Jun 17 2010, 14:09
>1. add -maxmem= commandline paramer
range 256 to 2047 now , because now it starts to play bigger role than before

What's a sensible set of values - ["unassigned",256,512,1024,2047] ? Or should it increase in steps of 256 ?


2. add -nosound commandline parameter

Easy to add.


3. add -window commandline parameter


Relevant values in the cfg file seem to be:-


winX=271;
winX=271;
winY=233;
winW=800;
winH=600;
winDefW=800;
winDefH=600;

WinX/Y are position and therefore not likely to affect performance. I'm not sure of the difference between WinW/H and WinDefW/H ? Should these always match ? And what is the relationship between these and Resolution_W/H and Render_W/H ?

Dwarden
Jun 17 2010, 14:14
steps of 256 should be fine (eight values)

position, size of window and 3D rendered size

sbsmac
Jun 17 2010, 14:25
Ok so to be clear,

winW/H are read instead of Resolution_W/H when Windowed==1
winDefW/H are read instead of Render_W/H when Windowed==1 ?

sbsmac
Jun 21 2010, 13:05
New version (application will auto-update) supports -maxmem and -nosound. I haven't yet implemented windowed mode because still a little unsure about the interaction between values in the cfg file and command-line parameters.

No Use For A Name
Nov 10 2010, 04:10
Is this still being updated? When I try to run the setup.exe it just start the FPS analyzer but doesn't install anywhere (but it runs), and the window looks different than the screenshot in the OP. Then after running a benchmark none of the data shows up in FPSanalyzer. Does this work with OA?

sbsmac
Nov 10 2010, 08:12
FPSAnalyser uses ClickOnce deployment which means it installs into a bit of a strange location (can't remember where but you can always search for it if need be). It will then turn up in the start-menu under Macs Tools->ArmAFPSAnalyser.

>Does it work with OA

Not at the moment since it is hardcoded to use the Arma executable. I may at some point update it to do so for my own use (in which case everyone will get an update) but I'm afraid it's not a priority.

Fireball
Jan 9 2012, 05:48
Mac, you're not coincidentally lurking somewhere around and just wait for someone to write this? If yes, can you make the FPSAnalyzer work with OA?

Pretty please. :D

Kremator
Apr 25 2012, 15:36
I love this tool....... VERY useful. However, what would be great is something that tacks onto a mission (and records/analyses FPS) based on scripts that are running. Is that even possible ?

Sgt-Chippuh
Mar 10 2013, 06:14
I would love something like this for ARMA 3

Foxhound
Mar 10 2013, 07:48
@<hidden>
Please do not dig up old and inactive threads when you have nothing significant to add to a thread. You obviously have not cause you have a request and for that you should use the sticky Arma 3 addon request which you can find in the Arma 3 forum section.

Please do not dig up old and inactive threads when you have nothing significant to add to a thread. You obviously have not cause you have a request and for that you should use the sticky Arma 3 addon request which you can find in the Arma 3 forum section.


§10) Do not dig up old threads

Threads older than 4 months should not be dug up unless something significant is being added. If in doubt as to what is "significant", contact a moderator and they will give you their opinion. As always old threads will remain open or be closed at the moderator's discretion. Digging up an old thread simply to ask "any news" is also not acceptable, PM the thread starter or mod leader to ask.

Forum rules (http://forums.bistudio.com/misc.php?do=vsarules)


For Arma 3 addon requests please use this thread
- Arma 3 Addon request thread (http://forums.bistudio.com/showthread.php?148719-ARMA-3-Addon-Request-Thread-%CE%B1) (also to be used when searching for a specific addon!)