|
|
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)]]
| |