作者laechan (小太保)
看板mud_sanc
標題[wizs] 最近上資料倉儲剛好上到的一個部份
時間Wed Oct 29 12:02:00 2008
資料倉儲有講到「合計表格」的概念,依我自己的理解,它的大意
是說,例如我們經常要用到某個數值..
n = (int)ppl->query("xx1") + (int)ppl->query("xx2") +
(int)ppl->query("xx3");
然後我們會很經常用到 n 這個值,那用到時就得去 query 玩家身
上的 xx1、xx2、xx3,然後再「合計」它們的 sum 結果後產生出
n 這個值。
那一個很直覺的想法就是,既然 n 很常用到,而且它的計算規則
也是固定的,那 n 是不是可以先預讀起來放著哩?
答案當然是可以的,例如..
set("xx",n);
那以後要用到 n 時就只需要 ppl->query("xx"); 就可以讀出 n 了
這個概念以及運用,在聖殿是很重要的,bdlen 一個很經典的例子
就是...
TEMP DATA :
dodge : ({ 0, 5414, 2400 })
玩家 temp data 區的這個資料是怎麼來的呢?
/d/skill/basesk.c
bdlen 發現在做玩家格擋/閃躲/招架的判斷時總是要讀玩家的一堆
數值資料並做計算,但實際上有部份的數值其實是...
1)常保固定的
2)變動幅度小到可以忽略的
3)可以忽略其變動的
這時候這些數值就可以先行預讀出來並做完計算後設入 dodge 中,
則當要做格擋/閃躲/招架的判斷時就不用再去讀玩家的一堆數值資
料,只要讀 dodge 中的資料「再讀其它幾個必要的資料」就可以了
,讀資料的步驟可以省略很多,相對就能提高執行效能。
那何時產生 dodge 這個資料值呢?就是在玩家登入的時候。
我自己在聖殿也是有一些這方面的運用啦,不過很多都不是在數值
的計算上就是了XD
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 218.170.229.211 (10/29 12:03)
1F:推 bahatest :打怪會不會死,登入就決定了 10/29 20:01
2F:→ bahatest :就像幸福或困苦,出生就決定了 10/29 20:05
3F:→ laechan :樓上小心洩漏聖殿機密喔 10/29 21:41