การตั้ง Whole Module Optimization สำหรับ iOS project

Pun Pakorn
2 min readNov 1, 2017

--

สำหรับคนเป็น iOS developer คงไม่มีอะไรน่ากวนใจไปกว่ากดรันทีนึงแล้วเดินไปเซเว่น+เข้าห้องน้ำกลับมายังไม่เสร็จ ใน blog นี้จะแนะนำวิธีที่ทำให้ compile เร็วขึ้น

ความจริงก็ไม่เชิงแนะนำคนอื่นหรอก แค่โน้ตหาตัวเองมากกว่าว่าเคยเซตยังไงแล้วสุดท้ายถึงได้

สิ่งที่จะมาช่วยเรา compile เร็วขึ้นคือการ optimization ของ compiler นั่นแหละ ตัวที่เร็วสุดคือ Whole Module Optimization

ถ้าตั้งซื่อๆ เลยแบบนี้

จะทำให้ debug ไม่ได้

ให้เพิ่ม flag -Onone เข้าไป (อ่านว่า โอน็อน นะ ไม่ใช่ออนวัน)
จะทำให้ compiler compile แบบ whole module แต่ไม่ optimize code

ใส่แค่ที่ target พอ

จากประสบการณ์จริงลดเวลา compile ได้ประมาณ 50% จาก 13 นาทีกว่า เหลือ 6 นาทีกว่า

มี warning อยู่เดี๋ยวแก้นะ

วิธีที่เคยลองแล้วใช้ไม่ได้

ส่วนวิธีที่เซต Optimization Level เป็น None แล้วใส่ flag SWIFT_WHOLE_MODULE_OPTIMIZATION เป็น YES รู้สึกจะใช้ไม่ได้แล้ว ไม่เร็วขึ้นแถมมี warning ว่า deprecated

แบบนี้ไม่เวิคนะ

ถ้าอยากรู้ว่าทำไมมันเร็วขึ้นลองอ่านรายละเอียดเพิ่มจาก https://swift.org/blog/whole-module-optimizations/ และเสิชหา blog อังกฤษอื่นๆ ละกัน อย่างที่บอกอันนี้เป็นโน้ตว่าอันไหนทำแล้วได้ผลดีเฉยๆ

วิธีให้ xcode แสดง build time

defaults write com.apple.dt.Xcode.ShowBuildOperationDuration -bool YES

พิมพ์ข้างบนใส่ terminal

จบ.

--

--