弑血
|
分享:
▼
x1
|
[插件] 如何优化你的程式码效能
这边我这用一个方法展示,以下是测试展示
先创立需要的脚本(inc)
#include <amxmodx> #include <engine>
#define PLUGIN "插件名称" #define VERSION "插件版本" #define AUTHOR "创作者名称"
// 创立一个广域阵列,1-32给玩家的变数空间 new bool:g_switch[33];
public plugin_init() { // 注册普通插件的流程 register_plugin(PLUGIN, VERSION, AUTHOR); //注册用一个cmd呼叫 register_clcmd("test", "cmd_test"); }
public cmd_test(id) { if (!g_switch[id]) //判断如果是false~ g_switch[id] = true; //开启 else g_switch[id] = false; //关闭 }
// engine.inc 内专用的 client_PostThink (客户端思考),警告(思考速度异常快)
// 主动偷吃效能类型
public client_PostThink(id) { //第一关卡 //判断不是活着返回,但是一值回传给is_user_alive的native检测,amxmodx的inc 内 is_user_alive 一直被超高速呼叫 if (!is_user_alive(id)) return;
//第二关卡 //开关如果是关闭就返回,如果是is_user_alive判断是活着才会拼命呼叫g_switch if (!g_switch[id]) return; //第三关卡 client_print(id, print_center, ":O"); }
// 不主动偷吃效能类型 public client_PostThink(id) { //第一关卡 //开关如果是关闭就返回,但是一值回传给g_switch检测,由于是使用自订的阵列检测,就不用透过回传给inc去特意判断 if (!g_switch[id]) return; //第二关卡 //判断不是活着返回,如果g_switch被开启后才会拼命呼叫native~, if (!is_user_alive(id)) return;
//第三关卡 client_print(id, print_center, ":D"); }
第一个是在不吃觉得情况下,被native的is_user_alive偷吃掉很多记忆体...放在思考更明显
第二个是用自定义的g_switch检测,唯有在开启后才会被native的is_user_alive偷吃掉很多记忆体..
教学完毕~ 可以去检查 你自己的插件 有没有一些在没有特别注意的情况下被偷吃掉的native....尤其是放在连续使用的function(函数)的
[ 此文章被弑血在2020-11-03 04:07重新编辑 ]
|