廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 128 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
弒血
個人頭像
個人文章 個人相簿 個人日記 個人地圖
社區建設獎 特殊貢獻獎 創作大師獎
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x96 鮮花 x208
分享: 轉寄此文章 Facebook Plurk Twitter 版主評分版主評分版主評分 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[插件] 如何優化你的程式碼效能
這邊我這用一個方法展示,以下是測試展示


先創立需要的腳本(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重新編輯 ]

此文章被評分,最近評分記錄
財富:500 (by amore12)




目前傳授教學&有興趣者可以信件問我
BOT瞄準攻擊NPC&模仿事件觸發計算出場&插件新增地圖重生位置等等
已修復entity的attachment錯誤問題,開始嘗試寫出各種npc_boss成品
按這裡檢視影片,登入論壇可以直接觀看
按這裡檢視影片,登入論壇可以直接觀看
按這裡檢視影片,登入論壇可以直接觀看
按這裡檢視影片,登入論壇可以直接觀看
獻花 x3 回到頂端 [樓 主] From:臺灣中華電信股份有限公司 | Posted:2020-11-03 04:01 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.014936 second(s),query:15 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言