精華區beta PCman 關於我們 聯絡資訊
大家等我這篇應該很久了,我本來不想回的,都在改程式沒空閒聊, 何況這本來是個沒什麼大不了的議題,不過我也很好奇,所以經過研究之後 決定提出我的回覆,大家可以參考看看,有意見歡迎討論,覺得有道理的歡迎轉錄, 先撇開勝負或面子問題不談,我不希望看到一般使用者被數字迷惑。 來個題外話,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)
irvinchen:這一解釋,可就清楚明白了:P 140.113.126.3 09/10
kewang:大推呀~ 借轉回信箱 220.139.62.92 09/10
hjdmllmedbu:-->> [人不是PCMan殺的啦~~XD] 218.160.25.59 09/10
allenown:請問作者可以轉回ptt2嗎?謝謝!:) 202.178.160.155 09/10
kejj:文章第三行有提到歡迎轉錄 感謝HZYSoft 220.229.27.34 09/10
subsist:推~ 61.229.144.75 09/10
a2a:大推 借轉回學校的BBS 謝謝 218.164.133.215 09/10
passerk:大力推!!PCMAN萬歲萬歲萬萬歲~~~~ 140.118.202.141 09/10
Kenqr:推~~ PCMan好棒~~~ 140.113.95.98 09/10
PolarChen:再推! 218.187.60.67 09/11
realtemper:轉....宣傳一下^^ 140.112.245.210 09/11
pachinko:PCMAN真是太強了! 推推~ :D 61.222.17.242 09/13