Re: [閒聊] 由 mud 產生 html 檔
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間17年前 (2009/02/04 12:52)推噓0(0推 0噓 0→)留言0則, 0人參與討論串5/6 (看更多)
※ 引述《cloderw (漫雲端)》之銘言:
: ※ 引述《laechan (小太保)》之銘言:
: : str="<body>\n"+
: : "<tr><td>等級</td><td>Id</td><td>暱稱</td></tr>\n"+
: : "<tr><td>"+ppl->query("level")+"</td><td>"+ppl->query("name")+
: : "</td><td>"+ppl->query("chi_name")+"</td></tr></body>\n";
: : 如果要顯示一個 1000 行的資料,上面的寫法是不行的,因為太多的字
: : 串累加,除非是單機型的 mud 不然是跑不動的。
: : 變通的方法則是..
: : str=sprintf("<body>\n<tr><td>%d</td><td>%s</td><td>%s</td></tr></body>\n",
: : ppl->query("level"),ppl->query("name"),ppl->query("chi_name"));
: : 但是要顯示 1000 行的資料可能也會有點吃力。總之,還有其它的方法
: : Laechan
: MudOS 在處理字串累加上效能的確是相當差
: 有一種作法是先利用字串陣列分批儲存字串後
: 最後再用 implode efun 一次結合起來
: 如此可以大量減少 MudOS 內部重覆執行 malloc 與 strcpy 的動作
: 例:
: string *texts = allocate(1000);
: for(int i=0;i<1000;++i)
: texts[i] = sprintf("anything you want");
: return implode(texts, "");
: 這樣可以大幅減低單純因文字處理的效能損耗
: 剩下的效能瓶頸則是卡在 ppl->query 這個 call_out 與 query 的本身運算
歡迎 rw 的 clode 來訪^^
這個我有在聖殿的 skilldata allskill -skill 指令實作過,
不過那時我沒有預先 allocate,而是用陣列 += 的方式,之後
才用 allocate。
我之後使用的其它做法,是用少量遞迴的方式,把一次性累加
分 2~3 次完成(依資料量決定)。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 218.170.230.44 (02/04 12:53)
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19