Difference between revisions of "Optimizing Plugins (AMX Mod X Scripting)"

From AlliedModders Wiki
Jump to: navigation, search
(Tips and Tricks)
(Faster Natives)
Line 3: Line 3:
 
LOL HAX
 
LOL HAX
  
==Faster Natives==
+
LOL HAX
AMX Mod X replaces many of the old AMX Mod natives with faster versions.  Read below to discover them.
 
 
 
===Cvar Pointers===
 
As of AMX Mod X 1.70, you can cache "cvar pointers".  These are direct accesses to cvars, rather than named access.  This is a critical optimization which is dozens of times faster.  For example:
 
<pawn>new g_enabled = register_cvar("csdm_enabled", "1")
 
//OR
 
new g_enabled = get_cvar_pointer("csdm_enabled")
 
 
 
stock SetCSDM(num)
 
  set_pcvar_num(g_enabled, num)
 
 
 
stock GetCSDM()
 
  return get_pcvar_num(g_enabled)
 
</pawn>
 
All of the cvar* functions (except for set_cvar_string) are mapped to [get|set]_pcvar_*.  You can get a cached cvar pointer with get_cvar_pointer() or register_cvar().
 
 
 
===FormatEX===
 
As of AMX Mod X 1.70, there is an ultra high-speed version of format() called formatex().  It skips copy-back checking, unlike format().  formatex() cannot be used if a source input is the same as the output buffer.  For example, these are invalid:
 
<pawn>new buffer[255]
 
formatex(buffer, 254, "%s", buffer);
 
formatex(buffer, 254, buffer);
 
formatex(buffer, 254, "%d %s", buffer[2]);</pawn>
 
 
 
It should be noted that format() will behave the same as formatex() if it detects that there will be no copy-back needed.  However, formatex() does not check this, and thus is slightly faster for situations where the coder is sure of its usage.
 
 
 
===File Writing===
 
As of AMX Mod X 1.70, there are new natives for file writing.  Read_file and write_file are O(n^2) functions for consecutive read/writes.  fopen(), fgets(), fputs(), and fclose() are O(n) (or better) depending on how you use them.
 
 
 
[[Category:Scripting (AMX Mod X)]]
 

Revision as of 20:38, 17 January 2007

LOL HAX

LOL HAX

LOL HAX