Code:
Ok some data for you devs. These tests were repeated three times with same result.
5*15 = 60 units.
After deletion, 60fps.
10*15 = 120 units.
After deletion, 60fps.
15*15 = 180 units.
After deletion, 60fps.
20*15 = 240 units.
After deletion, 60fps.
25*15 = 300 units.
After deletion, 45fps.
30*15 = 360 units.
After deletion, 30fps.
35*15 = 420 units.
After deletion, 28fps.
This ... is stupid :P
Somewhere you have some CPU wasting cycles, that occur (at least for me) around 260 units...
---------- Post added at 06:47 AM ---------- Previous post was at 06:10 AM ----------
Because pretty pictures make everything understandable.

And now some proper data and testing capabiliitiesfor the developers.
Groups Units FPS Before FPS After
2 11 58.82 55.56
3 21 55.56 55.56
4 31 55.56 55.56
5 41 55.56 55.56
6 51 45.45 55.56
7 61 55.56 55.56
8 71 55.56 55.56
9 81 41.67 58.82
10 91 43.48 55.56
11 101 55.56 58.82
12 111 45.45 55.56
13 121 43.48 55.56
14 131 55.56 55.56
15 141 43.48 55.56
16 151 41.67 55.56
17 161 38.46 55.56
18 171 31.25 55.56
19 181 32.26 58.82
20 191 28.57 58.82
21 201 23.26 58.82
22 211 23.26 58.82
23 221 26.32 55.56
24 231 21.74 58.82
25 241 23.81 55.56
26 251 21.28 55.56
27 261 20.83 55.56
28 271 27.03 52.63
29 281 23.81 43.48
30 291 21.28 43.48
31 301 23.81 50
32 311 21.28 47.62
33 321 18.87 43.48
34 331 17.54 41.67
35 341 18.52 40
36 351 16.95 37.04
37 361 19.61 37.04
38 371 18.87 34.48
39 381 18.52 35.71
40 391 18.52 32.26
41 401 18.87 32.26
Script to run to test it yourself.
Code:
testLoc = [2500,2500,0];
_delete = {
{
deletevehicle _x;
} foreach (allunits - [player]);
{
{deletewaypoint _x} foreach (waypoints _x);
deletegroup _x;
} foreach allGroups;
{
deletevehicle _x;
} foreach (vehicles - [vehicle player]);
};
_getinfo = {
[count allgroups,
count allunits,
count vehicles,
diag_fpsmin]
};
_dump = {
diag_log str [
"\ngroups",(_this select 0),
"\nallunits",(_this select 1),
"\nvehicles",(_this select 2),
"\nFPS during",(_this select 3),
"\nFPS after", diag_fpsmin
];
};
_create = {
private "_x";
private "_y";
private "_z";
_x = (testLoc select 0) + random 100;
_y = (testLoc select 1) + random 100;
_z = (testLoc select 2) + random 100;
[[_x,_y,_z], west, 10] call bis_fnc_spawngroup
};
_i = 1;
while {true} do {
_y = _i;
while {_y > 0} do {
[] call _create;
_y = _y - 1;
};
sleep 3;
_info = [] call _getinfo;
[] call _delete;
sleep 3;
hint format ["Test %1 Complete",_i];
private "_info";
_info call _dump;
_i = _i + 1;
sleep 3;
};