基於不想一次將大量資料放入內存中
因此,我在設計會員資料庫時,將資料分成以26個英文字母作名的資料夾存放。
如下圖:
members
|--- db
|---a
|---b
|--(...)
|-- z
|--000000001.cgi
|--000000005.cgi (數字是會員ID)
|--- list
|--- lista.pl
|--- listb.pl
|--- list(...).pl
|--- listz.pl
當中 list(x).pl 中存放了:
會員ID,會員名稱,會員密碼,會員權限組別
好了,回正題,我要做一個類似lb 的 memberlist.cgi,豈不是要由list(x).pl 中讀取所有同字母開頭的會員ID,再到那會員的folder中開啟該 id.cgi 讀取資料??!
假設我要一次顯示30個會員,不就最小讀取30次檔案?!
假設A開頭的會員只有5個,那我還要顧慮到自動開啟B開頭的list來讀取。。。
而將來依特別條件排序時,更加混亂。。。
那麼各位大大有何良方可以以最小讀取檔案,最小使用內取得到最高效率?
写入cache也许是个好主意:)
@@
也要cache= ="
但問題是,memberlist 這些小功能,用cache 未免沒有用?
cache時間可以設定為1天以上,呵呵
其实perl读取少量的小文件应该是很轻松的。。一个大的总list才是吃力的 看你怎么制好的索引
我觉得关键在于memberlist的结构
定长文本数据库未必不是个好方法
是的
我有打算將資料做成定長度。
但奈何沒有時間編寫。。。
結果那個論壇只寫了一點。。。
謝謝樓上的解答。
客气.........
map + unpack...
之前寫過類似的給你
map好像比foreach慢些
map 会比 foreach 快一点,因为他传递是“引用”。
9.95,0,0,0
7.42,0,0,0
7.14,0,0,0
这样看来。似乎foreach 还效率高点?
恩
是一定的
我可不知道啦
可能是我測試的空間有問題
空循环估计和执行非空的时候有差别。因为 map循环格式和foreach不太相同。
試試寫個加總看看效果....
我的測試結果:
0.89,0.015,0,0
0.875,0.062,0,0
0.89,0.046,0,0
楼上的结果有点假
我的测试结果:
http://easun.org/upload/early/CEB4C3FCC3FB_1107059969.jpg
哈哈,
我的機器較特別@@?XDD :em06: