Thời gian compile của Xcode ảnh hưởng rất nhiều đến tốc độ phát triển ứng dụng của bạn, vì vậy chúng ta cần hiểu rõ và có những phương pháp cụ thể để không phải tiêu tốn đi những khoảng thời gian vô ích này. Sau đây là những tips giúp bạn hiểu rõ hơn về compile của Xcode để giúp cải thiện thời gian build trong project:
1) Measure your compile time correctly ⏱️
Để cải thiện thời gian compile đầu tiên bạn cần biết được thời gian build của dự án, mặc định thì Xcode sẽ không hiển thị nó, tuy nhiên bạn có thể show qua lệnh terminal sau:
1 | defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES |
Sau khi bật chức năng timer bạn bạn có thể nhìn thấy thời gian build của dự án trên thanh top của Xcode.
Nhưng thực tế, nếu bạn đã build ứng dụng trước đó thì thời gian build lần sau sẽ nhanh hơn vì chúng dùng các dữ liệu caches trước đó, vì vậy để biết được thời gian compile thực sự của project trước khi build bạn phải clean project (⌘+⌥+K) và xoá derived data.
1 | rm -rf ~/Library/Developer/Xcode/DerivedData |
Sau khi clean và build thì thời gian compile đã lâu hơi và đây mới chính là thời gian compile thực tế của project.
2) Get a warning for slow code ⚠️
Xcode thật sự rất thông minh với tính năng này. Để enable warning compile thì bạn thêm các đoạn mã sau vào Other Swift Flags
trong Build Setting
:1
-Xfrontend -warn-long-function-bodies=50
1 | -Xfrontend -warn-long-expression-type-checking=50 |
Nếu 1 function hoặc expression cần nhiều hơn 50mili giây để biên dịch thì Xcode sẽ báo warning. Bạn có thể tuỳ chỉnh các giá trị minimum mili giây để báo warning với các đoạn mã trên.
The basic improvements
Kích hoạt 1 tính năng mới trên Xcode gọi là concurrent build tasks bằng lệnh terminal sau, lưu ý tính năng này giúp thời gian build nhanh hơn nhưng sẽ ngốn nhiều memory máy của bạn hơn.1
defaults write com.apple.dt.Xcode BuildSystemScheduleInherentlyParallelCommandsExclusively -bool NO
Some coding guidelines
Sử dụng let thay cho var nếu có thể.
Sử dụng final class nếu có thể để tăng performance của app và giảm thời gian compile Apple Docs.
Ngưng sử dụng các biến mà không khai báo kiểu dự liệu của nó
Stop 🛑var name = getName()
=>> var name: String = getName()