Swift đã trở thành một trong những ngôn ngữ lập trình hiện đại nhất tính đến thời điểm này, nhưng cũng giống như những ngôn ngữ khác, nó cũng có những điểm yếu nhất định. Khi làm việc trong những dự án có quy mô rất lớn, bạn thường để ý rằng thời gian biên dịch của Swift cũng tỷ lệ thuận với độ lớn của project đó. Đó thực sự là một điều khá khó chịu khi mà chúng ta phải tốn rất nhiều thời gian ngồi chờ Swift biên dịch, thậm chí là khoảng 10-15 phút. Nó làm tôi nhớ đến những ngày đầu tiên của Android Studio.🐢🐢🐢🐢

Đó là lý do vì sao chúng ta phải tối ưu Xcode và cách chúng ta code để tiết kiệm thời gian hơn. Ở bài viết này tôi sẽ giới thiệu một vài cách để giảm thời gian biên dịch của Swift một cách đáng kể.

Đầu tiên là chúng ta hãy cài đặt một tool có tên là  Build Time Analyzer for Xcode theo hướng dẫn có sẵn ở trên link Github và chạy project của bạn. Tool này sẽ phân tích code của bạn và thông báo với bạn đoạn code nào tốn nhiều thời gian biên dịch nhất. 

 

 

Trước khi đi vào code, hãy cùng tùy chỉnh một vài setting ở trên Xcode cho việc tối ưu nhé. 

 

  • Đầu tiên hãy mở  Build Setting -> chọn Optimization Level và set phần Debug thành None. Sau đó ở trong Build Settings -> chọn User-Defined và thêm SWIFT_WHOLE_MODULE_OPTIMIZATION = YES
 
  • Chúng ta xóa file dSYM ở Debug - dSYM là một file mà lưu trữ thông tin debug và lưu ở trong dSYM Bundle, file này được tạo ra mỗi khi bạn compile project. Tuy nhiên bạn không cần cái này ở trong Debug, vì vậy chúng ta thay đổi giá trị thành DWARF, và set active chỉ cho Release mode.
 
  • Set trường Build Active Architecture Only thành YES cho tất cả những bản build non-release. Việc này sẽ ngăn chặn Xcode compile hai lần.
 
  • Nếu bạn có bất kỳ vấn đề với việc build project thif bạn nên bắt đầu từ đây. Tìm đến File - > Project Settings và chọn mũi tên bên cạnh Derived Data path. Mũi tên sẽ trỏ đến folder và bạn hãy xóa folder này đi. Đừng lo vì folder này sẽ được tạo lại mỗi lần bạn run project, bên cạnh đó thì cũng đừng quên clean project (CMD + Shift + K)
 

Trên đây là những tùy chỉnh ở trên Xcode để tối ưu hóa tốc độ biên dịch cuả Swift. Tiếp đến là những cải thiện cần làm ở trong code.

  • Bạn nên khai báo tường minh kiểu của các biến ở trong code, như vậy sẽ giúp trình biên dịch tiết kiệm đc một chút thời gian để đọc code và tự định kiểu cho biến đó. Ví dụ:
let array: [String] = ["a", "b", "c", "d", "e", "f", "g"]

Thay vì 
 

let array = ["a", "b", "c", "d", "e", "f", "g"]
  • Tránh sử dụng toán tử Nil-Coalescing, hãy dùng:
if let name = string{ 
 /* string has value */
}else{
 /* string is nil*/
}

thay vì

 let name = string ?? ""
  • Sử dụng Ternary Conditional Operators  cũng góp phần làm tăng thời gian biên dịch cho Swift, mặc dù cùng với nil-coalescing thì nó làm cho code của chúng ta ngắn gọn hơn, nhưng hãy cố gắng hạn chế sử dụng chúng và dùng toán tử if-else nếu như bạn có thể
var letter = ""
if isFirst{ 
  letter = "a"
}else{
  letter = "b"
}

thay vì:

 let letter = isFirst ? "a" : "b"
  • Không dùng toán tử + để nối string mà hãy dùng string interpolation.

 

 let url = "https://google.com/\("path")/\("anotherpath")"

Thay vì

 let url = "https://google.com/" + "path/" + "anotherpath"

  • Không tính toán trực tiếp từ trong khối lệnh if-else, sẽ mất rất nhiều thời gian để hoanf thành. Bước này sẽ làm tốn thêm khoảng hơn 5s biên dịch cho mỗi khối lệnh. Do vậy bạn nên tạo một biến trung gian và thêm khối lệnh tính toán vào, sau đó chúng ta truyền giá trị của biến này vào trong khối lệnh if-else
let number: Double = 60 * 60
if number == 3600{
}

Thay vì:
 if number == 60 * 60 {}

Nguồn bài viết: https://hackernoon.com/speed-up-swift-compile-time-6f62d86f85e6