???? 原文鏈接
原因
通過(guò) TimeProfiler 對(duì)關(guān)鍵函數(shù)進(jìn)行耗時(shí)埋點(diǎn)谨履,發(fā)現(xiàn)有兩個(gè)函數(shù)耗時(shí)較多:
一個(gè)是 SwiftASTContext 類(lèi)的 GetCompileUnitImportsImpl 方法漱病,這個(gè)方法主要是解析當(dāng)前編譯單元與 Module 相關(guān)的操作崎页,另一個(gè)則是在某一個(gè)變量如果是 Any 類(lèi)型,則需要對(duì)其進(jìn)行解析珠漂,找到其類(lèi)型相關(guān)的操作,而最終這兩個(gè)函數(shù)的操作都與當(dāng)前工程的二進(jìn)制依賴(lài)分析有關(guān)系。所以霞势,如果能減少在斷點(diǎn)命中后對(duì)依賴(lài)的分析,那么斷點(diǎn)時(shí)間就會(huì)越快斑鸦。
解決方案
從兩個(gè)配置項(xiàng)著手愕贡,在命中任意斷點(diǎn)時(shí)執(zhí)行以下兩個(gè)命令:
settings set target.memory-module-load-level minimal
settings set symbols.use-swift-clangimporter false