Just My Life & My Work

升級 Macbook Pro 硬體

此文撰寫於2021/09

最近發覺我手上的 Macbook Pro 2015 年的筆電,狀況越來越多,一開始我還能適應,不過最近狀況頻繁發生,於是審慎思考是否該換新的 Macbook Pro,畢竟未來狀況無疑會越來越多且頻繁~😳

為什麼狀況會越來越多且頻繁呢?

廣告

1. 為了開發最新最前衛的 App,勢必要跟著最新最前衛的技術走,於是將隨著時間更新 MacOS 和 Xcode,這兩者規格持續會有某大程度提升,也因此會更操硬體。每次我更新 MacOS 後,便明顯感受到,點擊頁面(Xcode 和 Chrome 等軟體)會延遲比上個 MacOS 更久。比如,過去可能是 0.1 秒反應時間,現在會提高為 0.2 秒,甚至更久。

2. CPU、Memory、Disk 使用率將會逐漸升高,一方面是軟體升級,一方面是硬體折損,一來一往,每經過一年,硬體的負擔將越來越重,而且運行的體感將越來越卡頓。其實就跟 iPhone 每經過一年,升級 iOS 後的體感極其類似。

我手上公司機 Macbook Pro 2015 狀況大致上如下: 

1. 硬碟空間不足,僅有 128GB
2. 記憶體不夠,僅有 8GB
3. CPU負擔重,僅是 2.7GHz 雙核心 Intel Core i5

參考:https://support.apple.com/kb/SP715?locale=zh_TW

公司太省了吧⋯⋯😬影響到我的產能變低、錯誤變多,那可就萬萬不可啦~跟大家建議一下,要是公司連工具設備都不肯更新,可能就要另謀出路,因為工作後續衍伸的問題,都會從此誕生~不信?讓我們繼續看下去~

雖然筆電年紀不是直接關係,不過筆電是 2017 年出廠(技術規格 2015 年初最基本規格),使用至今 2021 年末,也有 4 年半的時間,硬體是會隨著時間折損。

過去是三個問題在不同時候出現,最近則同時出現機率變大,以致於超出容忍界線。

第一點(硬碟空間不足)是最早發生,2020 年 9 月之後,因為 Apple 釋出最新 Xcode 12,為了安裝它,需要先升級 MacOS Catalina,接著才能安裝 Xcode 12。

安裝 MacOS Catalina 問題不大,僅需 10 GB 上下空間。安裝 Xcode 12 問題就大了,App Store 顯示 11.2 GB,我留 15GB 應該夠用,但最後我移除許多軟體(包含內建),甚至把前人 House 的帳戶中的檔案都移除,終於挪出 33GB 空間,才順利安裝完成!

上述,為了安裝 Xcode 12,我實際上我需空出 45GB 的空間,這難度在僅有 128GB 的筆電困難度很高。

為什麼呢?

1. 系統(約 12GB)+其他(約 29GB):約 41GB
2. 應用程式:約 25GB
3. 文件檔案:約 39GB

以上其實我已經陸續刪除很多用不到的應用程式和文件檔案,盡可能利用 128GB 到極致,只是現在又遇到瓶頸(主要是 Xcode 膨脹),硬碟空間實在不夠用。

廣告

此外,在開發 App 過程中,會產生各式各樣的暫存檔。特別是這三個地方:

~/Library/Developer/Xcode/iOS DeviceSupport
這裡放的是連接實機而生成的檔案。之前的經驗是,每個 iOS 版本的大小都是以 G 起跳,比如 13.0.0 是 3.0G,13.2.1 是 3.3G 等等。

~/Library/Developer/Xcode/Archives
App 打包生成的檔案。之前的經驗是,每個打包檔案有不同的大小,目前點點印專案高達 0.9G。其實只要保留最新一個版本就好,早期的版本從沒有拿來「開刀」過。

~/Library/Developer/Xcode/DerivedData
專案的索引文件等。之前的經驗是,每個專案視複雜度有不同的大小,目前點點印專案有 0.9G。
甚至,還有 Git 版本控制產生的檔案,可能高達幾 G。

由於空間有限,會產生一些問題:

其一,讓我無法與時俱進,也就是 Xcode 有新版時就去下載來試用,過去我習慣保留一個舊版本和一個新版本,新版若有問題就切回舊版,以此逐漸了解新技術與新限制。

其二,我不太敢升級 iPhone 的作業系統,因為一升級 iOS,Xcode 也必須要跟著升級,才能編譯 App 到實機測試。有時候為了升級 Xcode,還得升級 MacOS 呢~這是一連串的效應,Apple 就是要逼我們跟上,無可厚非。對於想要持續優化公司產品的我們,最好的做法就是跟緊 Apple 的腳步。

其三,開發過程受阻,有時候編譯、打包 App 錯誤,竟然是說「No Space Left」⋯⋯真沒想這過程到會吃掉那麼多空間,這在趕進度時很惱人,要停下工作來挪出空間,還有煩惱哪些檔案可以刪除。

其四,MacOS 自動(不知名規則)會幫我把某些檔案上傳 iCloud,導致立馬要使用時,還要等待它下載回筆電。

第二點(記憶體不夠)是比較偶爾發生,由於我不會同時開太多軟體,使用 Chrome 瀏覽網頁保持 Tab 20 個以內,我也沒有使用特別吃記憶體的軟體。記憶體使用量大的話,就會跳出強制關閉應用程式的視窗,無法不理會它,每 5 秒就跳到視窗最前面,讓我無法打字。有時會強制關閉某些軟體,甚至需重開機才可解決,不然軟體運作會有問題。
導致一段時間就要重開機,釋放無法動用的記憶體,正常 Macbook 運作是可以不開機好幾個月都沒此問題。

第三點(CPU 負擔重)是逐漸無感,畢竟已經習慣此環境開發 App,卻是影響最為深遠~比如,大腦思考速度非常快,遇到效能逐漸降低的工作環境,大腦會跟著放慢思考(溫水煮青蛙概念),對充滿學習熱誠的人是慢性扼殺,直到再也受不了,回頭才發現損失慘重(可能是公司產品有缺陷、個人成長受阻礙)。
程式執行編譯需要大量的 CPU 資源,每天進行開發與維護工作,勢必會有數十次以上的編譯。而產出測試版,Release 打包時間會比 Development 編譯時間更久,因開發時會持續 Cache,但釋出時則重新編譯打包,目前打包時間 10-20 分鐘。

編譯的目的有:

1. 了解前人寫的功能流程。大致是花我最多時間的部分,畢竟要先了解會動到的部分,接著去增修才不會產生非預期的錯誤。程式碼光用看的實在不足以全面理解,就算邏輯清楚,但在 UI/UX 上的體驗還是得跑實機,於是勢必得實際操作功能。若想理解如何使用函式、變數、API,每改一個地方,就要編譯一次來執行,在特定處下中斷點,查看執行前後狀態,以確認我理解該部分。

2. 測試自己寫的程式邏輯。這部分若想得很透徹,其實不會花太多時間。會花較多時間的地方在於,與其它功能或頁面銜接,比如我這頁要傳遞正確的參數到下一頁,或上一頁會傳遞什麼參數到我這一頁。或是影響大範圍或全域性的函式、變數、API,更是需要花時間思考與測試。

CPU 負擔重,影響層面相當廣。產生的現象有:

A. 軟體內或軟體間的切換、滾動(比如 Chrome、Slack 與 Xcode 等)比起前一版 MacOS 慢很多
B. 點擊軟體某小功能,卻會遲鈍或轉圈圈等待
C. 打字有時候會卡頓
D. 有時點擊某功能沒反應,會想點擊第二次,但其實正在執行,只是畫面跳轉慢
E. 筆電風扇異常運轉變大聲,但沒有做特別事情F. 工作情緒變得焦躁,因預估時程被工作設備不給力拖累
以上非常影響我思慮與寫程式的流暢。

由於使用相對較差規格的設備來開發,對我和公司其實是弱勢不利的。我本以為在有限資源下,更能激發我的潛能,但這只僅在「有意義」的部分,更多時候我需要快速理解程式碼,若能幾秒內編譯好我增修的程式碼,我可快速進行迭代作業。

廣告

沒有比較,沒料想到,證實我浪費好多時間在等待。XcodeBenchmark 來比較各種硬體規格,實際編譯某複雜專案的時間。

參考:https://github.com/devMEremenko/XcodeBenchmark

對照一下大致符合的規格與網友測試數據(時間越少越好):

  • 我用公司筆電~MacBook Pro 13″ 2015:597秒
  • 我用自己筆電~MacBook Pro 15″ 2015:334秒
  • Fanny 公司機~MacBook Pro 16″ 2019:250秒
  • 我期望的筆電~MacBook Pro 13″ 2020:117秒
  • Leddy的筆電~MacBook Pro 13” 2020:265秒

我是在 Fanny 跟我說,我的筆電好像快燒掉了,我笑說那是風扇的聲音⋯⋯才意識到,也沒做什麼特別的事,怎麼風扇會轉那麼快?好奇心使然,跟 Fanny 詢問她使用公司筆電的規格,一比較下才震驚一下,差的不只是兩個層級⋯⋯😱
我的公司機規格~

  • MacBook Pro 13″ 2015
  • CPU 2.7 GHz 2-cores Intel Core i5
  • Memory 8GB 
  • SSD 128GB


Fanny 的公司機規格~

  • MacBook Pro 15″ 2019 Memory 16GB
  • CPU 2.6 GHz 6-cores Intel Core i7
  • Memory 16GB 
  • SSD 256GB


相比之下,讓我好想搶她的筆電來用XD~相信至少可以省一半的時間,我可以為公司做更多事!
其實我期待的規格也不會太高,我認為最低規格如下即可:

  • MacBook Pro 13″
  • Apple M1 8-core
  • Memory 16GB
  • SSD 256GB

此規格官網只要 45900 元https://www.apple.com/tw/macbook-pro-13/

若以此規格,根據上述比分,Xcode 編譯速度可以比現在筆電快 5 倍!!!

我好像一直都太客氣,以至於只是拿堪用的筆電來進行開發,卻沒有意識到這個影響深遠,可以幫助公司產品快速進行迭代(新增 Feature/Function,修復 Bug/Crash),能讓自己有更多空閒時間研究新技術,甚至研究更好的 UI/UX 與行銷。

由於我們 App 已經開發維護 7 年(2014 年開始),功能與流程複雜度相當高,打包後檔案約 100MB,每次編譯時間都是以分鐘起跳(少數有 Cache 比較快),每天幾十次編譯測試,一年幾千次編譯測試,有一大部分工作時間都花在等待,實在太可惜。這可能是開發 Web 不需要編譯的人難以體會的工作過程。

終於,我曉得,估工時,我總是以很保守的方向來衡量,就是以習慣當下開發環境來估時,但沒有意識到,其實可以更快,那就是「工欲善其事,必先利其器」。還以為自己能力開始變差,但事實上是設備環境變糟,畢竟我依然非常有熱誠在研究新技術,比如 Swift、SwiftUI、Flutter 等。

我們很注重產品的 UI/UX,因為要給用戶極致好的體驗,其實工程師也須強化開發時期的 UI/UX,有好的環境與設備,如此不受打擾下全神貫注完成任務,肯定可以提高產能與減少不預期問題。

人的思慮是非常快速,卻得停下來配合慢速的開發環境,以至於工作效率產能逐漸低落,甚至容易出差錯⋯⋯遇到卡頓狀況,是非常阻礙思路進行。

原本我想要做更多事兒,現在僅能剛好完成開發進度,若能改善我開發環境與設備,想必對公司產品與對我未來幫助極大。

廣告

若繼續使用 MacBook Pro 13” 2015,未來推測會繼續發生:

  1. 更新 MacOS ,系統運行速度,將再次變慢。目前筆電 MacOS 是 10.15.7 (2020年9月24日),最新版是 11.6 (2021年9月14日)
  2. 需挪出大量空間,才能安裝新版 Xcode 13
  3. App 編譯速度,再度變得緩慢
  4. 開發進度的安排變得更保守,多一事不如少一事,為了不產生非預期的 bug
  5. 其它任務不敢接下,比如增修 API、大幅度增修 App、大量手動修復作品等,以免產生重大失誤
  6. 在開發新的 Feature 時,可能舊的 Bug 頻繁出現,使得必須停下來緊急處理
  7. 可能便宜行事,使得 Bug(顯性與隱性,甚至低級)變多,未來花更多時間修正
  8. 發佈版本較沒信心,因開發過程不順暢,於是心裡有疙瘩,擔心有隱性 Bug
  9. CS 收到客訴變多,花更多時間處理與補救
  10. PDN 回報作品有誤變多,花更多時間修正作品
  11. 自顧不暇、疲於奔命,惡性循環

詢問過去共事的前同事,他們在公司使用的 Macbook Pro 多為 2019 年以上規格。此外,有機會從友人那兒借用 MacBook Pro 13” M1 2020,發覺體驗是非常舒適流暢,讓我有信心換新機後,工作效率、產能提高 2 倍以上,出錯機率降低。這是種用過之後,就回不去的感覺。類似 2019 年的我,使用過 iPhone 11 後,就不會想再用回 iPhone 6。
我工作會使用到的軟體,M1 目前有支援的軟體:Xcode、Sublime、Source Tree、Postman、Slack、iTerm、Keynote、Chrome、Line 等等。基本上不用擔心有不支援的軟體。
若使用高規格新筆電工作,未來我可以再次多做些事:

  1. 協助增修 API。因為高效率完成 App 任務,所以可以安心切換到別的平台協作。
  2. 協助回覆 App Store 評論。因有閒暇時間,比較能體會用戶的回饋,然後思考可能的解決方案。
  3. 研究產品相關技術功能。比如先前研究 Apple Login、Line Login、Google Login、Face Detection、評分評論等等。
  4. 研究 iOS 新技術、新規則。今年的 2021 WWDC 新技術還沒時間研究。
  5. 研究市面上優質 App 功能、流程、UI/UX。比如 App Store 上競品上萬個高評分、每日登入積分等等。
  6. 優化 UI/UX。開發時期體驗的好壞,會投射到開發的產品中。找到耗時流程(可能是 App 或 API),改善演算法或執行流程
  7. 觀察數據變化,調整產品開發方向。因好奇 App 各部分使用率,會埋記錄次數的事件,包含 Feature/Bug/Crash。
  8. 修復 Crash。可以有更多時間查找難以重現的部分,因流暢的工作思慮,有較大的機會想出問題關鍵處。
  9. 修復 Bug。可以有更多時間查找難以重現的部分,因流暢的工作思慮,有較大的機會想出問題關鍵處。
  10. 整理產品專案,如語法、註解、邏輯等等。有時候趕進度,會忘記寫過的部分,多過目幾次,能從中優化。
  11. 多關心同事有無需要幫忙,無論哪個部門,藉此了解 App 可以如何改進優化。
  12. 游刃有餘、循環向上、超前部署

其實之前還有餘力(閒暇時間)的時候,我會主動去做上述的項目,但後來逐漸減少如此做,現在找到主要原因是工作設備不給力,導致閒暇時間越來越少(時間不知不覺被吃掉)。逐漸會花時間處理低規格硬體產生的問題,還有等待低規格硬體反應。

最後當然就是,強烈建議,公司購置新的筆電 Macbook Pro,讓我開發不再受限~
以上說明那麼多事跡,一方面是幫自己整理工作歷程,一方面條列出來更清楚我的努力與貢獻。
現在 iOS 15 釋出,為了與時俱進,購置又新又高規格筆電,過去落後的就讓未來追回吧!🤩

Comments on: "升級 Macbook Pro 硬體" (1)

  1. 現在我使用的筆電,編譯速度超快!工作效率提升非常多~

    Device CPU RAM SSD HDD Xcode macOS Time(sec)
    MacBook Pro 14″ 2021 M1 Pro 8-core 16 512 13.1 12.0.1 109

    一進公司,應當配置最新規格(不用到頂規),如此工作起來,心情愉快!

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: