NSLog效率低的原因

1.NSLog就不是設(shè)計(jì)作為普通的debug log的,而是error log(源自官方文檔:Logs an error message to the Apple System Log facility.)
2.NSLog也并非是printf的簡(jiǎn)單封裝,而是Apple System Log(后面簡(jiǎn)稱ASL)的封裝。
3.NSLog會(huì)向ASL寫log,同時(shí)向Terminal寫log,而且同時(shí)會(huì)出現(xiàn)在Console.app中(Mac自帶軟件,用NSLog打出的log在其中全部可見);不僅如此,每一次NSLog都會(huì)新建一個(gè)ASL client并向ASL守護(hù)進(jìn)程發(fā)起連接,log之后再關(guān)閉連接。所以說,當(dāng)這個(gè)過程出現(xiàn)N次時(shí),消耗大量資源導(dǎo)致程序變慢也就不奇怪了。
4.此外,還有個(gè)值得注意的問題是NSLog每次會(huì)將當(dāng)前的系統(tǒng)時(shí)間,進(jìn)程和線程信息等作為前綴也打印出來,如:

2017-11-15 11:324:53.731 XXXXXXX
當(dāng)然這些也可能是作為ASL的參數(shù)創(chuàng)建的,但不論如何,一定是有消耗的。

解決方法:
1.代碼提交的時(shí)候就是刪掉代碼中的打印信息
2.在Debug模式以及Release模式下,采用宏來控制打印信息,release的時(shí)候把NSLog的打印信息都關(guān)掉
3.使用替代品來替換掉NSLog,比如CocoaLumberjack,當(dāng)然自己封裝一個(gè)簡(jiǎn)單的日志系統(tǒng)也可以

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容