好不容意實作好轉成 Graph 了,結果跑了程式,( # of nodes , # of links ) = ( 347 , 422 ) ,並且在 FreeBSD 7.0 以及 2GB 的記憶體和 Intel(R) Pentium(R) 4 CPU 2.80GHz (2813.54-MHz 686-class CPU) 下,竟然要花 1 秒鐘!足以讓我認為這東西沒有 on the fly 的價值!
接著,我又開了 UCINET 跑一下 betweenness,咻地,雖然上頭也是寫 1 秒鐘,但感覺就是比我寫的程式快 XD ,雖然 OS 或是硬體是環境又不一樣了(Windows XP with SP3 & AMD2 5000+ & 2GB),仍然讓我很驚訝。
後來,我發現自己實作的 betweenness 有可以偷吃步的加速方式 XD ,不一會兒就給它降到 0.3 秒附近啦!但仍覺得這個結果有點糟!原先我以為可以快到 0.1 以下才是!呼,如果 UCINET 實作上並沒有像我一樣偷吃步,那我寫的程式真的是太慢了 :P 不曉得這是不是因為我實作 Graph 保留太多彈性所造成的?還是因為必須比 UCINET 多做事(切 Record 取資料)咧?anyway,這東西就只看成果跟時間,誰管你做了啥。
這次我仿 Kudo 牌 rgrep ,實作了一個 record2graph 的程式,大概稍微修正 rget 讀 stdin 不能 fseek back 的問題,然後也發現存在一些小問題,不過也都沒無礙啦!所以,我也完全就沒更新 rgrep 囉!要保留最原始的結構啦 XD 我覺得參考別人的程式規劃是件挺不錯的,對我而言,到現在還是有壞習慣,很容易把一堆 functions 塞在一個檔內!
這次實作用了一個 function pointer 來增加程式的彈性!原本還想加上不定長度的參數方式,想想後,只是脫褲子放屁!哈,就沒做了。嘿嘿,開始偷偷地引入 Graph 的分析法囉!
沒有留言:
張貼留言