寫!

A little C programming...

{ed Reported author [email protected]}

For many years molecular biologists have been mystified by the fact that very
little of an organism's DNA seems to serve any useful function.
 
I have solved the mystery.
 
The reason why only 30% of human DNA performs any useful function is that the
rest of it is comments.
 
Once we decode a typical human genome, we see that the contents begin as
follows:

===
/* HUMAN_DNA.H
 *
 * Human Genome
 * Version 2.1
 *
 * (C) God
 */
 
/* Revision history:
 *
 * 0000-00-01 00:00  1.0  Adam.
 * 0000-00-02 10:00  1.1  Eve.
 * 0000-00-03 02:11  1.2  Added penis code to male version. A bit messy --
 *                        will require a rewrite later on to make it neater.
 * 0017-03-12 03:14  1.3  Added extra sex drive to male.h; took code from
 *                        elephant-dna.c
 * 0145-10-03 16:33  1.4  Removed tail.
 * 1115-00-31 17:20  1.5  Shortened forearms, expanded brain case.
 * 2091-08-20 13:56  1.6  Opposable thumbs added to hand() routine.
 * 2501-04-09 14:04  1.7  Minor cosmetic improvements -- skin colour made
 *                        darker to match my own image.
 * 2909-07-12 02:21  1.8  Dentition inadequate; added extra 'wisdom' teeth.
 *                        Must remember to make mouth bigger to compensate.
 * 4501-12-31 14:18  1.9  Increase average height.
 * 5533-02-12 17:09  2.0  Added gay option, triggered by high population
 *                        density, to try and slow the overpopulation problem.
 * 6004-11-04 16:11  2.1  Made forefinger narrower to fit hole in centre of
 *                        CD.
 */
 
/* Standard definitions
 */
 
#define SEX male
#define HEIGHT 1.84
#define MASS 68
#define RACE caucasian
 
/* Include inherited traits from parent DNA files.
 *
 * Files must be pre-processed with MENDEL program to provide proper
 * inheritance features.
 */
 
#include "mother.h"
#include "father.h"
 
#infndef FATHER
#warn("Father unknown -- guessing\n")
#include "bastard.h"
#endif
 
/* Set up sex-specific functions and variables
 */
#include 
 
/* Kludged code -- I'll re-design this lot and re-write it as a proper
 * library sometime soon.
 */
struct genitals
   {
#ifdef MALE
   Penis *jt;
#endif
   /* G_spot *g;   Removed for debugging purposes */
#ifdef FEMALE
   Vagina *p;
#endif
   }
 
/* Initialization bootstrap routine -- called before DNA duplication.
 * Allocates buffers and sets up protein file pointers
 */
DNA *zygote_initialize(Sperm *, Ovum *);
 
/* MAIN INITIALIZATION CODE
 *
 * Returns structures containing pre-processed phenotypes for the organism
 * to display at birth.
 *
 * Will be improved later to make output less ugly.
 */
Characteristic *lookup_phenotype(Identifier *i);
===
...and so on. [ Note that God uses three-space tabs ]
sauce:http://www.netfunny.com/rhf/jokes/91q3/genome.html
發表時間:2013年3月6日 | 評論 (0) | 全文

Programming for adults

如果要選一個程式語言教成年人programming 的話, 最好的選擇是甚麼呢?
我有幾個想法:

1. Logo :
好處: 語法少, 語義明確, 可以最快速度介紹迴圈等概念
壞處: 執行方式比較像命令行, 成品不實用
推薦: ****

2. VBA :
好處: 配合office, 容易看到效果, 語法極端簡化而有口述味度, 有一定程度的UI和計算功能
壞處: 依賴office 使用, 不可擕
推薦: *****

3. Batch / Shell Script
好處: 可携, 無需設置, 無需安裝, 免費
壞處: 語法煩瑣,效能低
推薦: **

4. JS
好處: 同3, 效能高
壞處: 語言特性多, 難以精通
推薦: ****

5. PHP
好處: 功能強大, 語言簡約
壞處: 設置不簡單, 不能配合傳統調試方法
推薦: ****
發表時間:2013年3月5日 | 評論 (0) | 全文

Performance of OOP PHP versus non-OOP

有關php 中class 的效能。實在是一個十分有價值的問題。在網上我找到一個測試。

找到大約overhead 為13%, 但我覺得有點問題。現修改如最下。
修改原因為: 
1. 加入對照實驗。
2. 以++$ 代替$++ 以加速無用處理。
3. 平function addApple() 修改為pass by reference, 因為在oo 中也沒有複製變數

測試已扣除最初十次, 得出結果如下, 取相差不大於1 的mode 的平均數:
測試一:
77.508211135864
77.514886856079
78.943967819214
78.752040863037
78.17006111145
78.351020812988
(78.20)

測試二:
29.010772705078
28.954982757568
29.269933700562
29.193878173828
29.047966003418
29.186010360718
(29.11)

測試三(overhead noise):
0.024795532226562
0.018835067749023
0.02288818359375
0.024080276489258
0.024795532226562
0.02288818359375
(0.023)

如測試二以pass by value 來處理:
36.258935928345
36.988973617554
37.697076797485
37.261962890625
37.230014801025
37.543058395386
(37.16)

-78.2 -29.11 -0.023 -37.16
1 0.37225 0.00029 0.47519

背景時間不足千分一, 暫且可以不計
得出結果十分驚人, 減速的分額不只是十多%

在簡單的存取下餘下只有三分之一的操作效率, php 類型的穿透性實在很弱。

但是我不得不補充一點, 在日常事務中, 存取次數不會如始巨大的, 事務用途的話, 一次只用大約10次。但對於如ADO / PDO 等資料迴圈, 中間的效能衰減真是令我膽顫心驚。


測試代碼: 


<?php
function getmicrotime() //grabbed from PHP.net documentation
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$t1=getmicrotime(); // start stopwatch
if($_GET['test']==1){
class basket {
private $apples;
function basket($apples) {
                $this->apples=$apples;
}
function addApple() {
                ++$this->apples;
}
}
$b1=new basket(10); // start with 10 apples
for ($i=0; $i<50000; $i++) {
$b1->addApple();
$b1->addApple();
}
}else if($_GET['test']==2){
function addApple(&$basket) {
return ++$basket;
}
$b1=10; // start with 10 apples
for ($i=0; $i<50000; $i++) {
addApple($b1);
addApple($b1);
}
}else if($_GET['test']==3){
}
$t2=getmicrotime();
echo ($t2-$t1)*1000; //result time
?>
發表時間:2012年10月26日 | 評論 (0) | 全文

漫談15年以來網頁開發的心路歷程

雖然工作不是專職網頁, 而是其他的程式類型。但我應該可以說是持續最多年放注意力和網編的一群人之一。

要說這15年的大事記, 就由15年前說起吧。這裡的15年只是大約, 實際上可能不只。
每每我要寫這種記事, 應該是發現了歷史的循環, 那麼, 的確不是一件好事。

就由我安裝Office 97 開始說起, office 97是我從慈雲山一間頗具人氣的老翻店舖買來的。安裝在Windows95 上的確是有一種超前的未來感。Windows95 那種超前的按鈕風格直到今天2012年還在Windows7 以選項方式使用, 實在可以用巂永來形容了。

Office 97重視網頁的程度令到還沒能連接上網的我在那個圖書館也找不到瀏覽器的時代也留意到網頁這東西了。可是frontpage97 的用心程度卻是在很多很多年之後, 在xhtml 都普及了的今天才能發現。

在同一個時期, 因為Windows95 osr2 的關係 IE3.0 十分的普及 (前版是IE2), 但IE4的釋出卻是G 點滿佈。要說網址列甚麼時候開始被人習慣放在資料夾的下面呢? 不是廣為人用的Windows98, 實際上是IE4。這個軟件甚至把機內資源和網頁資源都抽象化了。然後自定化資料夾也是這個時候開始的。電腦的易用性和上一頁和下一頁這兩個按鈕的反應速度和重要程度在這個時期達到巔峰。說是直接指引了一條業界的光明大道也不為過。資源抽象化可說是Microsoft 的一大特色, 在windows 97 中 Word 中嵌入excel 表格時, 也可見一斑。

(延讀:http://realblog.zkiz.com/abbychau/26633)

但由於功能上的擴充, IE5 IE5.5 IE6 一步步的強化, (以致後期美國法院宣判不可把瀏覽器強行整合, 其實在這個時候, 瀏覽器實體化已經是十分明顯, 這是果大於因, 如果不是人群需要, 哪會出現這場官司?)情況又開始慢慢轉變, 瀏覽器又獨立出來了。

同一時期, 不得不說Frontpage 和Frontpage Express 這兩套十分重要的平民工廠。FP是隨著office 而來的, 而FPE 則是隨著IE 而來的免費軟件。Frontpage 的功能強大不用多說, 但微軟因為其重心在於收費服務器的關係, asp 的動態功能幾乎完全被封(所以其實一直以來非法版本伺服器的中國大陸, asp 比php 還要盛行10倍以上, 到近年才有改變)。但同一時間FPE 卻被(我)稱為古代神器。FPE 生產的代碼不但簡單, 準確, 互相兼容, 復原能力強, 而且程式一如Wordpad 套件般高效快速, 實在放到今天也是一個好工具。MS 為"做大塊餅" 確實不違餘力。

但"做大塊餅"的同時, 為自己公司爭取市場地位也無可厚非。可是, 微軟和一眾基金會的關係卻太差了。為了滿足使用者的要求, 一眾亂七八糟不合規格的網頁套件在標準化之前都在IE 登場了。unsigned embed, bgsound, marquee, 以致令今天不少開發人員吐血而亡的"IE 456 風格" 等等等等, 都為firefox 出場之後IE 重拾正軌加了一大塊絆腳石。但是, 不計javascript 的引擎, IE 456 的渲染效能和記憶體效率的確是很好的。

在這個時期, 人們的網頁的要求簡單直接。更重要的時, 使用者願意也具備高度的集中力去留意內容, 算是一個良好的時期。

之後就是百花齊放的免費撥號到ADSL 民用初期, 這個時期互聯網發展真可說是一日千里, Angelfire, geocities, kimo 等等的空間十分流行, 二級商業模式也開始有了。在這個時候, 除了FP 和FPE 之外, 也有很多使用者直接使用Word 等直接輸出網頁, 甚至把powerpoint 的網頁匯出當成網頁(ppt 有自己的網頁運行庫, 和今時今日的html5+js 效果比起來一點不弱, 十分的有趣)。這令互聯網的格式變後非常不可用, 以yahoo 為首的搜尋器公司都是用人力密集或递交審核的方法把資料收集。直到google 的算法型搜尋器的出現。從這裡看來, google 的出現是必然的; 無需要甚麼過人的眼光, 這幾乎是自然而然的產物。

除了免空, UGC 的站點也在一小群有智慧的人們中開始了。在1.0的初期就應用了2.0的模式, 除了智慧, 我也想不到另一個詞了。那時除了Frontpage extension server 之外, 也有不少用perl cgi 寫成的動態網站, 維護問題不大, 但scalability 卻是個問題, 以前用文本資料庫的及時轉到web2.0 的的確沒幾間。但在這個時候寫程式的都是大牛, Leoboard 的花無缺和糊就是當中的頭牌了。還有比較像玩具的各種guestbook, 日記, 畫板等等...(這個時期日本的java applet 畫板進展驚人啊!)

再後一點的時期, 不得不說Macromedia 這家大怪物。Macromedia 除了格調稍低, 在實力方面是Adobe 級數的一級開發商, 在互聯網發佈方面, 如不是MM, MS 可能還主導著市場。今天Adobe 中的發怖器, 幾乎都是從Macromedia 中得來的, 如Dreamweaver, Freehand, Firework, Flash 等等, 中間也有些停止了, 如authorware。
Dreamweaver 發怖的一瞬間, 市場都瘋狂了... 大家一直以來等待的FP 代替品出來了。到DW3 , 我認為已經是超越了FP的地位, DW的效能可能不高, 但是它卻生產更為實用而可攜的代碼, 以及和各方的動態語言組合, DW3/4 是最大的一個轉捩點, 完全實用而可攜的動態網站在彈指之間就可以完成了, 而且生產出來的語句還有一定程度的可修改性。雖然在以前Microsoft FP 已經有這樣的, 甚至更好的生產效率, 但是基於人們與生俱來對標準、安全感以及永恒性的追求, 轉到DW 的人開始多了, 不久, 取代了FP, 真到07年, MS 也不得不放棄FP, 在Office 中正式拿走。誰把門檻拿走, 誰就得到市場。
其他用具如Flash 的地位到今天還是不倒, Flash 在制造動畫的方面確實是簡單到一個地步了, action script 也不失為一個優雅的語言, 但Adobe 的最低階工程師好像不夠, AVM 的效能還是很差。
Authorware 是有段時間在網上流行過, 但在Flash 的狹縫中的確沒多大的生存空間, 在那個年期的javascript 也把authorware 秒掉了。

(說到Javascript, JS 這個名字是netscape 取的, 雖然是C 結構, 但和java 沒有半點關係。JS 這個名字無疑script 是個最大的問題, 作為一個語法比很多聲稱是語言的語言完整的語言, 竟被灌上script 這個詞! 想想java 和c++ 也是在上個版本才實作lambda 啊!!
不得不說今天的JS 水平高得令人乍舌。隨著V8 和 SpiderMonkey 的出現, Javascript 的應用真的愈來愈廣泛了。)

UGC 時期的出現一方面是上面說的賢人們的眼光, 另一方面也是市民開始輕易上網, 兩者結合而出現的。以前內容的發展是一日千里, 但千里還終究是千里, 是線性增長, UGC 時期則是平方數了。在UGC 的初期, 的確是一片茵茵向榮的現象, 曾經我在中學的電腦室叫過所有人都上一個自己做的論壇, 每篇主題都是個人手打過百字, 以前的人真的較好嗎? 非也, 是現在的人濫用方便的渠道而已, 很多時候, 門檻都沒有被裝上, 只是做訪客的責任心早已不復存在。

具標誌性的產品先是perl 語言為主的cgi, 再是asp, 但fcgi 型式的cgi 也開始出現, fcgi 的軟體藕合度更低, 在伺服器上的內存管理有優異的效率。到現在, 因為fastcgi 的建設方法在php 取後大成功, 已經成為眾多新伺服端的首選方法。

前端方面沒有出現很大的問題, 但各種的IE hack 開始出現, table 結構的網頁還是主流, 因為以table 作為主框架, 網頁是不會嚴重走位的, 即使看起來有差別, 對整體體驗影響不大, 對理解是更完全沒有影響。如果網頁繼續以這個方向發展, 我想也是不錯的, 但是人們網是喜歡看到新的東西, 推使人們去使用DIV + CSS 建築方法的, 無非也是一堆又一堆的eye candies。看著幾個漂亮的menu, 想炫的人又會做出更漂亮的。但華麗的外觀就往往意味著層級繁多而複雜, 也意味著"會出錯"。如果大家都用IE 的話問題可能不太大。直到一天, Mozilla 基金會的狂人們有人天突然想mozilla 重新走到大家的眼前。

Mozilla firefox 的出現之前也不是完全沒有預兆, 早在IE 開始個體化的時期, MyIE, avant 到greenbrowser 到maxthon 等等以頁簽為標榜的第三方瀏覽器因為網頁瀏覽的重度用家變多, 不滿足於視窗切換以及內存問題而大受歡迎。Windows 中巨大的進程記憶支出, 令到mozilla 找到出口, 一方面為用家省下記憶體, 另一方面利用插件補足用戶體驗, MS 一下反應不及就放棄了超過30%的市場份額。長時間後IE7 傖促加上頁簽也是返魂乏術。人們早就在spidermonkey 優異的JS 效能中寵壞了。而市場亦因此做出比以往複雜10倍以上的客戶端JS, 無疑是給予MSIE 一個重擊。

在這個時間, 史上最大的SNS 網絡橫空出世, Facebook 和twitter 走到大家眼前。在以前SNS 其實並非沒有實視, 只是要消費用家不少的精力。各個論壇的訂閱功能只要善加利用的話其實也有這個效果。但實現方法太過曲折, 曲折到甚至沒有人會覺得這可以和朋友保持聯繫, Facebook 把這不少人會做但很麻煩的東西實現了。說些個人感想, 雖然SNS 為互聯網帶來巨額用戶, 也為生態推前不少, 但我認為SNS 無異於一種幻術, 令人們開始分不清甚麼才是閱讀了。片段化及個人化的資訊無疑令人的快感推到頂峰, 但當人們習慣了, 也就回不去那種可能是最有效的閱讀方式。超連結不是用來作資訊的拓展, 而是純粹的功能性按鈕, 雖然我不應介懷這種利用, 但我確實是覺得這令人有很大的空虛感。

Wikipedia 是把超連結和版本號用到巔峰的網頁範式, 但伺服器開銷的確是一個很大的問題。

這些世界級程式的複雜度, 令開發人員返樸歸真。手工代碼又重新被重視起來。因為工作量大了, 眾多IT 公司的分工也明確起來, 設計的只用設計工具, 程式的只用編碼工具; 當然CSS + xHtml 或其他template language那種輕鬆學的markup 大家都知道。用Chrome 按F12 就可以輕鬆知道具體設計, 即時觀看了。

說到Chrome, Chrome 這個瀏覽器固然是十分優秀, 但卻沒有甚麼標誌性可言。在1.0推出的那個市場環境, 純粹是出於"分一杯羹"意願, 時間點也剛好是Firefox 開荒完成, 市份分額增長得最快的時間, 惡鬼般的出現。以V8 當時的完成度來看, google 是對 chrome 的出現時間是故意為之的。當然V8 的開源也為市場帶來很多優秀的實驗品, 如node.js等, 也算是功德一件。

發表時間:2012年10月24日 | 評論 (1) | 全文

瀏覽器

 平心而論, 在我的人生中遇到令我最驚喜的browser 是下面幾個

第四名: Firefox - 插件的設計令到瀏覽器變得更多用途

第三名: Netfront - 在十年前它已在手提裝置做出那麼好的渲染效果

第二名: lynx - command line 和GUI 的交界, 你實在太酷了

第一名: IE4 - 曾幾何時...我在95的時期, 就算沒有上網那要找到IE4的光碟來安裝, 要是說Windows 95 和 Windows 98 最大的分別, 我認為就是這個網址列了, 多麼聰明的把URI 這個概念模糊化!

發表時間:2011年8月2日 | 評論 (0) | 全文

Asynchronization for Adsense, is that difficult?

Large js codings that calls other files may affect the smoothness of page loading. Large delay on client side is occured so often.

Asynchronized javascript loading is doubtlessly a valid and strong trend to go.

However, many existing synchronized loading methoding methods are not seem to be modified such as the commonly used google adsense.

Let's take adsense as an example. unlike other services that only loaded once in a loading session, adsense has its uniqueness of loading 3 times per session, it makes the situation much complex by the following reasons.

eg. <div id="ads1"></div>
...
<script>load("ads1");load("ads2");load("ads3");</script>

1. identifying iframes to load its ads
2. methods for user to reuse the same code without parameter settings.
3. modern template have different ads on different modules and a global calling with static parameters may stucks

I am going to propose a solution

Due to the speed of computers and mobile devices increased, I supposed that queries for DOMs is possible for a single global calling.

eg. <div class="google_ads" rel="UNIQUE_ID"></div>
or. <div id="google_ads|UNIQUE_ID"></div>
etc...
<script type="text/javascript" src="http://...../load.js></script>
inside (jquery syntax)
$('.google_ads').each(function(){ insert($(this).attr('rel')); }
neat and fine

moreover, I want to complain that the current synchronized loading are buggy that making other iframes drawing inside the wrong advertisement boxes.

That's it.

發表時間:2011年1月27日 | 評論 (0) | 全文

上傳好物


http://demo.swfupload.org/v220/index.htm

效果不錯, 先記下了, 在google code 是首位的, high activity
發表時間:2010年6月3日 | 評論 (0) | 全文

PHP Template Engine Critique


Don't you notice that?

All the template engines claim themselves fast, small, with EXTREME performance, easy to use, maintenance and you can't live without them! Oh yea, I can't see how good they are other than claiming what they had going straight along this trivial work.

I am not going to talk about how useless a template engine is or how easy you can make it yourself although it's just easy as shit. Those engine try to rephrase what you can do in php to html only while reading those codes is not easier than the native PHP. Afterwards, they are joint together into a string for output and they try to make an extra useless cache function to the string because they think that it is soooooo difficult to fetch it, manipulate it and join them!

All right it seems to be somehow easier for different people to work together by sharing the same template language but why don't we make it more simple that just some customized expansion above eval()? In another word, I admit the existance of additional template engines rather than PHP.

While you dudes are using the huge bulky Smarty, how much time you spent on the lookup table?
發表時間:2010年3月21日 | 評論 (0) | 全文

鍵盤攻略


今天為電腦換了鍵盤, 鍵盤這東西其實真的頗耐用的
之前的那一個是七年前用$19 買買來的ps/2 鍵盤, 慢慢覺得按鈕的套縫變舊了觸鍵太重而換掉
(說起來這鍵盤的輸入次數算是很大了, 鍵盤裡面的膠模都打穿了兩個)

買這個鍵盤選了很久, 我認為選鍵盤要註意的地方有幾個,
1. 鍵重
2. 長鍵的平衡度
3. 鍵距
4. 自然工學
5. 售價

牌子反而不太重要, 一般來說有線鍵盤的質量是很高的

最重要的一點是鍵重, 選廠機的鍵盤都比較重, 低鍵重的物料都比高鍵重的來得些微貴
一般來說, 初學者可以用重的, 熟習了就盡可能的輕, 這對單手連用的按鍵速度和疲勞度有決定性的影響

長鍵的平衡度算是要並列第一的, 試驗鍵盤(尤其是平價的)要試左shift, 右shift, 空白, enter 幾個鍵
在左邊按下去和左右邊按下去都順暢不費力的為上品
長鍵的套縫和普通鍵一樣的大小, 因此要保持平衡裡面都加有平衡杆, 但有不少廠商為了減輕成本會降低平衡杆的質量甚至不用平衡杆(最常見是左右的shift, 大型backspace和小型enter, 空白的沒辦法不用)

鍵距普遍認為有分兩種, 厚和薄, 但實際上現在鍵盤廠太多了, 由0.5mm 到6mm 都可能找得到
我認為太厚和太薄都是不好的, 太厚會令人疲勞和減慢打字速度, 太薄則沒有手感兼準度不佳
3.5mm 左右是良好的桌上電腦鍵盤的觸感

自然工學輕則是enter 和backspace 的大小, 重則是鍵盤弧度設計(microsoft 已有專利)
但其實這點不太重要的, 要評的話功能鍵是愈大愈好的, 大型backspace 比小型backspace 用起來更舒用
因為右手在用它時旋轉得比較小

售價當然是愈平愈好, 但現時無牌的$19 - 29 的厚鍵鍵盤已經很難找到有得賣
既然如此就無需要去買差不多質量的國產牌子了, 大家可以試試用Hyundai 的(我新買的是它的cjc5060 ps2版)
錢夠的可以用用samsung 的不沖突鍵盤, 不介意鍵沖突的可以用microsoft 的, 鍵感不錯

有關ps2 和usb 的選擇,
它們的特點
ps2: 常用鍵沖突情況較少, 左右手八鍵(asdfjkl;)齊發是很普通的事, 但不用放到其他裝置, 在沒有ps2 口的電腦不能用
usb: 通常只能六鍵(sdfjkl), samsung 的獨特設計過的不算(價錢也貴很多), 有usb 的裝置就能用

如果有ps2 按口就買ps2 把, 除了價錢會較便宜, 鍵沖突少, 也能省回一個usb 位(反正ps2口不鍵mouse keyboard 也沒其他用途).
發表時間:2010年1月20日 | 評論 (0) | 全文

4k 之內


看到一篇頗有趣的討論, 很多論點呢

http://www.phpx.com/happy/archiver/tid-257682.html

php 寫下mysqli 的class 時沒有把caching 包含進去令到人們十分的不方便, 人們把以前mysql 的做法再一次放到mysqli 上

這個類的評價的地方實在很多, 首先用object 的alias 去套進另一個class 中已經是人們十分不願看到的一件事
不過最多評價還是在caching 上

樓主所用的是serialize 和deserialize, 我一直覺得效率已經十分好了

但樓下的點評也有很多資訊值得記下

理论上,mysql在读取数据前是经过一系列的判断操作之后再开始读取数据.

把要查询的东西生成一很简单的txt文档之后,直接读取的速度是要大大的快过从库里查询的.而且CPU或内存的使用量也应该要远远小于从库中查询才对.

====================================

那只是理论,但实际上并非如此
[code]for($i=0;$i<100;$i++) {
        $sql = "select * from words as a left join relative_words as b on a.word_id=b.word_id  limit 0,1000";
        //$res = $db->get_all($sql);
        $res = $db->cache_all($sql);
}[/code]
结果很诡异,前者
cost 1.00315293312 seconds
后者
cost 1.16315293312 seconds

=====================================

我的测试结果是相反的。最简单的取一条数据也是文本缓存的快一些。可能你缓存类的初始化过程比较费时间。

=====================================

反序列化双刃剑,如果数据较多,数组较复杂,就比较烦了

既然是cache就有命中率一说

数据库也是要走IO的,文件也是IO,文件cache配合内存cache效果会很好,通过优化cache,根据需求合理使用才是正确的选择(究竟如何才是合理呢...下面有答案)

=====================================

一般情况下用文本“缓存”绝对是大站的恶梦(google fs这类除外),轻量级应用还凑和,大型应用根本不行,也不可靠。

并行读写、ACID...

=====================================

这几天忙,没来看,多谢各位的回复。

关于单文件夹,这个其实在实际使用的时候是下面还有2级的文件夹,截取的md5前4位

单次查询其实走的还是mysql,第二次及更多查询的时候才是走文本缓存。

后来又做了些测试,当多表联查的时候,文本缓存还是有优势的,但是现在刻意只将数据在4k以下的做缓存,超过4k因为会分到磁盘的两个簇中,存放位置不一定连续,所以不使用

在无法使用memcache或者tt的情况下这个东西还是有点用处,关于并行读写,现在我还没发现什么问题

======================================

樓主最後的回覆真的是要點...究然連4k 一個簇也考慮進去了
那麼站點可以考慮把cluster size 很大(約16kB)的一個磁碟作為caching 使用, 反正對於伺服器來說, 磁碟機空間常常有很多但只是帶寬和cpu 不夠而已

發表時間:2010年1月1日 | 評論 (0) | 全文