[JASS]HASH 資料整理帖 (09/07/09/11:12暫停更新)

各類的進階專題研究、WE Bug討論等。

版主: crassorz, tv580025

[JASS]HASH 資料整理帖 (09/07/09/11:12暫停更新)

文章tv580025 » 2009年07月09日 8:51 am

About HASH

主要是用來取代緩存

並能增加觸發的效能

HASH的功能:

其和GameCache一樣在於對資料進行"綁定"

給定一個整數索引(handle的H2I值)

以及另一個物件(整數、字串、布林值等)

在兩者之間建立映射關係

也就是說,給定一個整數

要能通過某種方法查找到與之對應的一個值

待補完

回到頁頂

各種演算法:

待補完

回到頁頂

時間複雜度:

待補完

回到頁頂

什麼是L值?:

代码执行次数上限研究 by zyl910

待補完

回到頁頂

測試L值的方法:

回到頁頂

論壇範例:

回到頁頂

圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix

Re: [JASS]HASH 資料整理帖 (待編輯)

文章AppleSheep » 2009年07月09日 9:13 am

蘋果的全域傷害沒哈希表了
線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS]HASH 資料整理帖 (待編輯)

文章AppleSheep » 2009年07月09日 9:19 am

剛好是昨天做出來的

只需要2個全域變數的HASH系統

另外語法好像還沒支援16進位寫法的樣子

globals
    integer array HASH_ID
    integer array HASH_Next
endglobals

function H2I takes handle v returns integer
    return v
    return 0
endfunction

function SetID takes handle v returns integer
    local integer i = H2I(v)
    local integer h = i - i / 0x2000 * 0x2000
    local integer n = h
    if udg_HASH_ID[h] != 0 then
        loop
            if udg_HASH_ID[h] == i then
                return h
            endif
            set n = udg_HASH_Next[h]
            exitwhen n == -1
            set h = n
        endloop
        loop
            set n = GetRandomInt(0x0,0x1FFF)
            exitwhen udg_HASH_ID[n] == 0
        endloop
        set udg_HASH_Next[h] = n
    endif
    set udg_HASH_ID[n] = i
    return n
endfunction

function GetID takes handle v returns integer
    local integer i = H2I(v)
    local integer h = i - i / 0x2000 * 0x2000
    loop
        exitwhen udg_HASH_ID[h] == i or h == -1
        set h = udg_HASH_Next[h]
    endloop
    return h
endfunction

function ClsID takes handle v returns nothing
    local integer i = H2I(v)
    local integer h = i - i / 0x2000 * 0x2000
    local integer l = -1
    loop
        exitwhen udg_HASH_ID[h] == i
        set l = h
        set h = udg_HASH_Next[h]
    endloop
    if l > -1 then
        set udg_HASH_Next[l] = udg_HASH_Next[h]
    endif
    set udg_HASH_ID[h] = 0
    set udg_HASH_Next[h] = -1
endfunction

function HASH_Init takes nothing returns nothing
    local integer i = 0x0
    loop
        exitwhen i == 0x2000
        set udg_HASH_ID[i] = 0
        set udg_HASH_Next[i] = -1
        set i = i + 1
    endloop
endfunction

function InitTrig_HASH takes nothing returns nothing
    call ExecuteFunc("HASH_Init")
endfunction

回到頁頂

線上MSN

精華文章:
流連版 遺失的記憶
蘋果UI 最新1.8.8
Apple NewGen 與蘋果UI同步更新 (支援1.24)
Visual Jass (vJass) 教學 (初步完成)

圖檔
圖檔
圖檔
圖檔
頭像
AppleSheep
騎士
騎士
 
文章: 267
註冊時間: 2008年03月06日 11:23 am
來自: 虛無

Re: [JASS]HASH 資料整理帖 (待編輯)

文章crassorz » 2009年07月09日 11:14 am

來獻醜

globals
    integer array HASH_ID
    integer Data
endglobals

//初始變數
function SetID takes nothing returns integer
    local integer i = 0
    loop
        exitwhen i > 8191
        set HASH_ID[i] = i
        set i = i + 1
    endloop
    set Data = -1
endfunction

//獲得一個新的HASH陣列值
function GetID takes nothing returns integer
    set Data = Data + 1
    return HASH_ID[ Data ]
endfunction

//將用完的值好好回收就不會有事
function ReSetID takes integer HASHID returns nothing
    set Data = Data - 1
    set HASH_ID[ Data ] = HASHID
endfunction

//上限8192個資料組[0~8191]
//有很多方法可以擴充
//上系統為手打的未經測試,有誤就..再說吧

回到頁頂

最後由 crassorz 於 2009年08月02日 1:06 am 編輯,總共編輯了 1 次。
圖檔
我決定不再對伸手牌起反應
除非很有趣
頭像
crassorz
死亡騎士
死亡騎士
 
文章: 2338
註冊時間: 2008年04月06日 5:40 pm
來自: 什麼都有的雜物間

Re: [JASS]HASH 資料整理帖 (09/07/09/11:12待編輯)

文章tv580025 » 2009年07月09日 12:51 pm

可能要暫停更新了...

等1.23b版本來再看看...

現在先暫時觀望...
圖檔
http://weo.sabi.tw/blog <= 這是我的部落格
http://plurk.com/Neo_Yang <= 噗浪請按我


圖檔  凡事不經思索便行動 一條腸子直通到底的笨蛋
頭像
tv580025
冰霜翼龍
冰霜翼龍
 
文章: 1644
註冊時間: 2006年02月09日 12:29 pm
來自: Matrix


回到 專題討論區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 1 位訪客