BIS fnc codePerformance: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (1 revision)
m (note format)
Line 27: Line 27:
   
   
|x1= <code>testArray = [];
|x1= <code>testArray = [];
["testArray = testArray + [1];"] call BIS_fnc_codePerformance;
["testArray = testArray + [1];"] [[call]] [[BIS_fnc_codePerformance]];
testArray = [];
testArray = [];
["testArray [[set]] <nowiki>[</nowiki>[[count]] testArray,1];"] call BIS_fnc_codePerformance;
["testArray [[set]] <nowiki>[</nowiki>[[count]] testArray,1];"] [[call]] [[BIS_fnc_codePerformance]];
</code>
</code>
Compare two methods of adding elements into array|=  
Compare two methods of adding elements into array|=  
Line 44: Line 44:
<dd class="notedate">Posted on Mar 31, 2014 - 11:09
<dd class="notedate">Posted on Mar 31, 2014 - 11:09
<dt class="note">'''[[User:ffur2007slx2_5|ffur2007slx2_5]]'''<dd class="note">
<dt class="note">'''[[User:ffur2007slx2_5|ffur2007slx2_5]]'''<dd class="note">
(Environment: ArmA3 ver 1.14) Please always take advantage of the second and third parameters when running code on [[BIS_fnc_codePerformance]]. And it is not suggested to use reserved variables under scheduled environment. E.g.
(ArmA3 1.14) Please always take advantage of the second and third parameters when running code on [[BIS_fnc_codePerformance]]. And it is not suggested to use reserved variables under scheduled environment. E.g.
<code>['
<code>['
     [ { a = _this } ] spawn {
     [ { a = _this } ] [[spawn]] {
         private "_code";
         [[private]] "_code";
         _code = [_this, 0, {}, [{}]] call bis_fnc_param;
         _code = [_this, 0, {}, [{}]] [[call]] [[BIS_fnc_param]];
         { _x call _code; } forEach AllUnits;
         { _x [[call]] _code; } [[forEach]] [[allUnits]];
     };
     };
'] call bis_fnc_codeperformance;</code>
'] [[call]] [[BIS_fnc_codePerformance]];</code>
There will be a great latency until GUI being displayed, never do like that, on the contrary, we should:
There will be a great latency until GUI being displayed, never do like that, on the contrary, we should:
<code>['
<code>['
     {
     {
         private "_code";
         [[private]] "_code";
         _code = [_this, 0, {}, [{}]] call bis_fnc_param;
         _code = [_this, 0, {}, [{}]] [[call]] [[BIS_fnc_param]];
         { _x call _code; } forEach AllUnits;
         { _x [[call]] _code; } [[forEach]] [[allUnits]];
     }'
     }'
, [ {a = _this } ], 1000] call bis_fnc_codeperformance;</code>
, [ {a = _this } ], 1000] [[call]] [[BIS_fnc_codePerformance]];</code>
As for the third parameter, only run the code with desired loop and not always 1000 times like the default set: e.g.
As for the third parameter, only run the code with desired loop and not always 1000 times like the default set:  
<code>
<code>
[‘
[‘
  a= 0; b = true;
  a= 0; b = true;
  for [{_i = 0},{_i < 10 && b},{_i = _i + 1}] do {
  [[for]] [{_i = 0},{_i < 10 && b},{_i = _i + 1}] [[do]] {
   a = a + 1;  
   a = a + 1;  
   if (a >= 7) then {b = false};
   [[if]] (a >= 7) [[then]] {b = [[false]]};
  };’
  };’
  ,[],1000] call BIS_fnc_codePerformance;
  ,[],1000] [[call]] [[BIS_fnc_codePerformance]];
//Sometimes such 1000 loops will freeze the game directly.  
//Sometimes such 1000 loops will freeze the game directly.  
</code>
</code>

Revision as of 06:34, 26 July 2014

Hover & click on the images for description

Description

Description:
Measures how much time it takes to execute given expression. Results may vary based on overall performance; use this function to compare alternative scripting approaches rather than to measure specific values. In Arma 3, window with results is opened afterwards. NOTE: For best results restart your client before conducting tests. This function uses diag_tickTime which loses its precision the longer the client runs from restart. BIS fnc codePerformance.png
Execution:
call
Groups:
Uncategorised

Syntax

Syntax:
[expression(String),Any([parameters]),cycles(Number)] call BIS_fnc_codePerformance;
Parameters:
expression: String - tested expression
Any (Optional): Param(s) - passed into code (default: [])
cycles (Optional): Number - Number of cycles (default: 10000)
Return Value:
Nothing

Examples

Example 1:
testArray = []; ["testArray = testArray + [1];"] call BIS_fnc_codePerformance; testArray = []; ["testArray set [count testArray,1];"] call BIS_fnc_codePerformance; Compare two methods of adding elements into array

Additional Information

See also:
See also needed

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note

Notes

Posted on Mar 31, 2014 - 11:09
ffur2007slx2_5
(ArmA3 1.14) Please always take advantage of the second and third parameters when running code on BIS_fnc_codePerformance. And it is not suggested to use reserved variables under scheduled environment. E.g. [' [ { a = _this } ] spawn { private "_code"; _code = [_this, 0, {}, [{}]] call BIS_fnc_param; { _x call _code; } forEach allUnits; }; '] call BIS_fnc_codePerformance; There will be a great latency until GUI being displayed, never do like that, on the contrary, we should: [' { private "_code"; _code = [_this, 0, {}, [{}]] call BIS_fnc_param; { _x call _code; } forEach allUnits; }' , [ {a = _this } ], 1000] call BIS_fnc_codePerformance; As for the third parameter, only run the code with desired loop and not always 1000 times like the default set: [‘ a= 0; b = true; for [{_i = 0},{_i < 10 && b},{_i = _i + 1}] do { a = a + 1; if (a >= 7) then {b = false}; };’ ,[],1000] call BIS_fnc_codePerformance; //Sometimes such 1000 loops will freeze the game directly. So separating all three parameters and using them wisely are recommended.

Bottom Section