作者HZYSoft (pcman.ptt.cc)
看板PCman
標題[公告] 回應關於KKman比較省記憶體的質疑
時間Fri Sep 10 15:15:24 2004
大家等我這篇應該很久了,我本來不想回的,都在改程式沒空閒聊,
何況這本來是個沒什麼大不了的議題,不過我也很好奇,所以經過研究之後
決定提出我的回覆,大家可以參考看看,有意見歡迎討論,覺得有道理的歡迎轉錄,
先撇開勝負或面子問題不談,我不希望看到一般使用者被數字迷惑。
來個題外話,Intel P4 2.0 G 數字比較大,效能是不是一定比 AMD 1.8 G 強?
剛看到 KKman 這個數字的時候,我也覺得很震驚,這怎麼可能? 可是仔細一想,也還好
因為我要在此強調,Windows XP 工作管理員提供的數字根本完全不能採信
所寫出的數字也根本不是實際記憶體用量,不信的人請跟我這樣做,我證明給你看
1. 打開工作管理員
2. 啟動 Internet Explorer ,看他的記憶體用量,啟動瞬間大約在接近 6~8 MB 左右
開始連上線,讀取首頁之後記憶體用量直線暴增到 12~15 MB 之間,再用一陣子甚至
可能飆上 18,然後請注意這裡!! 請把 IE 視窗最小化,再看清楚記憶體用量
是多少? 是不是嚇到了? 瞬間減低到 3 MB 以下,甚至有時可能只有 800 KB
你相信嗎? 一個要十幾 MB 的軟體突然間剩下幾百 KB 用量? 說別的大家可能不信,
用 IE 舉例我相信這就很明顯,那是作業系統記憶體管理的把戲,不是實際記憶體
用量。 數字可能部分反應出使用情況,但事實上他到底指的是什麼數值,這點
微軟並沒有說清楚講明白,所以其實數字只是看爽的,沒多少參考價值。
3. IE 瀏覽器裡面,大家覺得最需要記憶體的是哪裡? 是工具列按鈕,是網址列,是選單
還是中間那塊內容超豐富的瀏覽器視窗? 用過的人應該知道答案。
事實上剛啟動瀏覽器的時候記憶體使用量很低,到開始讀取網頁的時候才會暴增
誰在吃記憶體,這很明顯。 請問大家,IE 本身需要 10 MB 以上的記憶體才能運作
而耗用記憶體的部分根本不在除網頁以外的地方,那一個使用 IE 為核心,完全依賴
IE 瀏覽器視窗的軟體,可能只有 2 MB 就能運作嗎? 如果這是可行的,世界最大的
軟體公司,怎麼不會想到把原 IE 丟掉,另外寫一個用 IE 為核心的軟體取代?
別的不說,網頁上顯示一張全彩 800 x 600 的圖要多少記憶體? 現在相簿很流行
不要以為 JPG 很小,要在螢幕上繪圖輸出都要先在記憶體解壓縮成 BMP,大約 2 MB
每個網頁上載入一張圖檔,開兩個分頁就超過軟體總記憶體消耗量了,這不是有鬼?
Firefox, IE 都需要 15 MB 以上的記憶體才會跑,所以一個 IE 核心的軟體,消耗
10 MB 以上的記憶體是正常用量,事實上 GreenBrowser 也要 10 MB 以上,誰跟我說
他真的相信 KKman 可以用 5~6 MB 就開好多分頁還上 BBS? 我知道顯示出來的數字
就是這樣,但如果這真的是因為程式寫的好,很省記憶體,那 KKman 早就不叫做
KKman 了,應該叫做 Microsoft KKman,因為微軟會買走他取帶 IE,內建於 Widows
一個軟體建構在需要 10 MB 的龐大核心上,沒可能用 5 MB 就可以執行,我還沒
有找到數字可以這麼"好看"的原因,但是大家可以試著這樣做,開幾個分頁,然後
切換來切換去,是不是發現每次切換記憶體用量都在變動? 而且甚至有時候會分頁開
越多,記憶體用量卻顯示越少的數字? 明眼人都知道這不可能是真的...這不用我多說
我沒有辦法解釋他是怎麼作到這種"數字",但是我可以證明那個數字完全是假的
4. 為了求證,我改用專業軟體開發工具實測,結果發現截然不同的結果
使用 Microsoft Process Viewer 來觀察 KKman ,有一些新發現:
測試環境: KKman beta 3 開三個空白分頁,一個 Google 加上一個 KKCity
Total commit Address Space : 36288 KB = 36 MB
這不是實際用量,commit 只會分配記憶體位址空間,不會實際配置記憶體
等到軟體真正需要用記憶體時,才會配置記憶體分頁,通常在分頁錯誤時配置
Mapped commit: 13260 KB,13 MB 左右,IE 核心軟體的一般正常用量,
Read Only: 8752 KB 常數資料使用 8.7 MB
Writable: 3580 KB 可寫入空間 3.5 MB
Executable: 928 KB 可執行記憶體區段, 1MB
-----------------------------------------------
Wroking set: 1588 KB = 1.5 MB
Peak working set: 10684 KB = 10.6 MB
Private pages: 6592 KB
重點來了: Page Fault: 140
查一下電腦上其他軟體的 Page fault,一般分佈在 4 ~ 35 之間
而 KKman 3 每切換一次分頁,就會增加很多 Page fault 分頁錯誤
這是什麼? 通常一個程式有大量的 Page fault 某種程度上表示效能低落
Page fault 是發生在軟體像系統要求記憶體,而實際上記憶體空間不存在時
白話一點的說,會發生在記憶體不足需要配置的時候,也就是 KKman 一直在不斷的做
大量記憶體配置,釋放的動作,經常跟系統要求記憶體,可能是程式編譯時刻意縮小
許多記憶體,包括堆疊等等,導致執行期間雖然帳面上數字好看,但實際上效能低落
大量的記憶體分頁錯誤也可能導因於過度使用的 inline function,或其他原因
有時候是因為要求到其他 Page 沒映射進來的記憶體,或者種種原因,也或許是因為
他是動態連結 MFC 4.2 的 dll 造成不斷需要 memmory mapping ? 實際我不是很懂
也不確定我有沒有說錯,這要問資訊科系念作業系統的人,我只懂皮毛。但不管怎樣
過量的 Page fault 在程式上來說,一般是認為這是程式效能比較低落的指標
雖然我覺得用起來也還好,沒什麼特別低落的感覺,但理論上來說確實是這樣的
太低階的東西我也不懂,姑且不論 KKman 怎麼讓記憶體消耗量顯示出小的數字
這並不代表他比較強,我說過了,使用需要 10 MB 的核心沒理由只要 5 MB 就可以跑
何況 PCMan 比 KKman 多了不少功能,這樣的比較沒有意義也不公平。
5. 結論,技術或數字不是重點,習慣才是王道,大家還是自由選擇自己喜歡的軟體
各取所需,開心就好。 這才是民主自由開放的社會 :)
不管你是 PCMan , KKman, MultiTerm or PacketSiTE,祝各位使用愉快。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.129.59.3
※ 編輯: HZYSoft 來自: 140.129.59.3 (09/10 15:16)
1F:推 irvinchen:這一解釋,可就清楚明白了:P 140.113.126.3 09/10
2F:推 kewang:大推呀~ 借轉回信箱 220.139.62.92 09/10
3F:推 hjdmllmedbu:-->> [人不是PCMan殺的啦~~XD] 218.160.25.59 09/10
4F:推 allenown:請問作者可以轉回ptt2嗎?謝謝!:) 202.178.160.155 09/10
5F:推 kejj:文章第三行有提到歡迎轉錄 感謝HZYSoft 220.229.27.34 09/10
6F:推 subsist:推~ 61.229.144.75 09/10
7F:推 a2a:大推 借轉回學校的BBS 謝謝 218.164.133.215 09/10
8F:推 passerk:大力推!!PCMAN萬歲萬歲萬萬歲~~~~ 140.118.202.141 09/10
9F:推 Kenqr:推~~ PCMan好棒~~~ 140.113.95.98 09/10
10F:推 PolarChen:再推! 218.187.60.67 09/11
11F:推 realtemper:轉....宣傳一下^^ 140.112.245.210 09/11
12F:推 pachinko:PCMAN真是太強了! 推推~ :D 61.222.17.242 09/13
13F:推 h5bfb3vr:超大推 06/03 01:53