BIS fnc codePerformance: Difference between revisions
| 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"> | ||
| ( | (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  |          _code = [_this, 0, {}, [{}]] [[call]] [[BIS_fnc_param]]; | ||
|          { _x call _code; } forEach  |          { _x [[call]] _code; } [[forEach]] [[allUnits]]; | ||
|      }; |      }; | ||
| '] call  | '] [[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  |          _code = [_this, 0, {}, [{}]] [[call]] [[BIS_fnc_param]]; | ||
|          { _x call _code; } forEach  |          { _x [[call]] _code; } [[forEach]] [[allUnits]]; | ||
|      }' |      }' | ||
| , [ {a = _this } ], 1000] call  | , [ {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:  | 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 05:34, 26 July 2014
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.
 
- 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.
 
	