→ Killercat:ram吃得凶跟OS底層API策略比較有關係,很難說好還是不好 04/07 06:57
→ Killercat:OSX本來就是傾向於"盡可能放記憶體給程式吃" 04/07 06:57
→ Killercat:你記憶體充足那就會無敵順(這應該就是前面同配備osx會比 04/07 06:58
→ Killercat:win7表現好的重要原因之一) 不過記憶體不夠就很麻煩 04/07 06:58
→ Killercat:尤其osx的swap其實並沒有win的pagefile效率那麼好 :Q 04/07 06:59
→ Killercat:不過我選mac當開發用機有幾個很重要的原因分享一下好了 04/07 07:00
→ Killercat:1. android device幾乎不用灌driver就能正確驅動 04/07 07:00
→ Killercat:2. 相對好用許多許多的unix based terminal 04/07 07:00
→ Killercat:3. 最重要的,這trackpad真是讚阿 XDDDDD 04/07 07:00
→ Killercat:4. xcode 5. 強迫自己用POSIX標準寫東西 04/07 07:01
→ Killercat:不然老實講我是.net c#派的 這個語言真的太棒了 XD 04/07 07:02
→ Killercat:算了回一篇好了 XD 04/07 07:08
來分享一下我自己為什麼選擇mac當開發機好了,
順便聊一下普通人對osx記憶體策略的誤解
OSX從10.3以來(我沒記錯的話)記憶體策略一直都是盡可能的最大化使用
他們的想法是"Unused memory is useless memory"
這策略理論上是正確的,至少在大部分的情況下
OSX記憶體策略來講,讓我們打開Activity Manager看一下
他記憶體一共分成四大區塊 : Free, Actived, Inactived, Wired
其中我們"真正"吃到的是Wired跟Actived,差別在於Wired不會被Paged or swapped
(也就是不會被寫入硬碟:在WIN的說法叫做虛擬記憶體或者PageFile)
而inactived則是最近quit的一些application占用的記憶體,雖然跟free有點差
但是在大多數的情況你可以當作他等同free
所以其實OSX吃的記憶體恐怕沒有大多數人想的那麼多 XD
但是事實上一個程式吃的wired+actived來講,osx的確是比win7來的多
(尤其VM系列 更是多上不少)
前面提過他的策略是盡可能多吃記憶體換取比較順暢的使用者體驗
這種策略不能說好或者不好,但是優點很明顯,缺點卻一樣明顯
在記憶體充足的場合中這樣是很讚的,但是記憶體不夠的場合就會出現問題
OSX也是吃swap(他的swap檔案在/private/var/vm/ 有興趣的人自己去翻一下)
但是他的swap事實上校能比linux的swap FS差一點
(linux swap吃自家的FS所以... 另外我不知道他跟mkswap搞出的swap效能高低)
而且也比windows的pagefile來的差
加上這種記憶體策略下,很容易就會讓部分常常執行到的東西掉進swap
然後他的swap不良造成速度低下 -- 更慘的是有時候wired不夠就會開始靈異現象
(osx的記憶體吃光光靈異現象在開發上不算少見,lion以後好一點)
win7很少有記憶體不夠造成當機或者靈異現象
我家的電腦以前4g, 有一條記憶體偷偷壞掉了所以變成2g我卻不知道
但是雙開VS+TES5只是覺得ㄟ奇怪怎麼電腦便那麼慢 硬碟怎麼老是狂轉
但是就是不會當機或者靈異現象 XD 後來才注意到阿娘威怎麼記憶體剩下2g...
osx其實比win7還需要重開機阿(經驗談)...
只是次數都不多就是了
ok上面聊到了OSX的記憶體策略,有優點也有缺點。下面分享一下為什麼我喜歡用osx開發
1. android device幾乎不用灌driver就能正確驅動
我自己是開發android為主的,他對於每支手機或者device幾乎都是插上就能用
linux的話要自己寫usb定義檔(煩) windows的話要灌每家不同廠商的USB Driver
當然,google是有提供一個公版的win usb driver 但是那個不是每隻手機都能用 :Q
2. 相對好用許多許多的unix based terminal
這個不用多說,這幾乎就是我選擇linux/osx而非windows的最大理由
但是osx又有一點比linux好的地方,在terminal裡面,事實上ctrl-v / ctrl-c
這兩個是有特殊意義的,所以linux的terminal剪下貼上非常麻煩
但是osx用cmd-c/cmd-v取代了ctrl,讓terminal方便度增加相當多
3. Trackpad
這可能不是很多人選擇的理由,但是對我這個喜歡拎個電腦到處跑的人來說
有一個能讓我完全不會想外接滑鼠的好cursor操作介面是一個非常亮眼的亮點
即使是我現在我都仍然是買Magic Trackpad外接我的mac 而非mouse
4. xcode
這個不用說,開發iOS非這個不可。不過老實講我自己是很討厭objc的 XD
只是剛好工作也需要開發一些lib for iOS
5. 強迫自己跟別人POSIX標準
這個應該很多人有這種經驗,接手一組code想要重複利用結果發現編譯錯誤一堆
仔細一看裡面居然充斥了一堆win32 api像是CreateThread(...) CSocket...
為什麼不乖乖用POSIX標準的__beginThreadEx跟SOCKET呢(怒吼)
6. (這是設計比較碰的到的問題) OSX的色彩比較正確
這篇前面剛好有人推文提過,請在本版搜尋"螢幕"
老話一句,我個人是C#派,非常喜愛.net。但是即使如此,我還是選擇mac當開發機
雖然在osx不能跑visual studio,不過大不了VM或者用TeamViewer/VNC連線回家寫阿
反正工作來講大多數都還是碰objc跟java比較多 XD
這些經驗跟大家分享一下參考一下
--
All Comments