NSLog效率低的原因

1.NSLog就不是设计作为普通的debug log的,而是error log(源自官方文档:Logs an error message to the Apple System Log facility.)
2.NSLog也并非是printf的简单封装,而是Apple System Log(后面简称ASL)的封装。
3.NSLog会向ASL写log,同时向Terminal写log,而且同时会出现在Console.app中(Mac自带软件,用NSLog打出的log在其中全部可见);不仅如此,每一次NSLog都会新建一个ASL client并向ASL守护进程发起连接,log之后再关闭连接。所以说,当这个过程出现N次时,消耗大量资源导致程序变慢也就不奇怪了。
4.此外,还有个值得注意的问题是NSLog每次会将当前的系统时间,进程和线程信息等作为前缀也打印出来,如:

2017-11-15 11:324:53.731 XXXXXXX
当然这些也可能是作为ASL的参数创建的,但不论如何,一定是有消耗的。

解决方法:
1.代码提交的时候就是删掉代码中的打印信息
2.在Debug模式以及Release模式下,采用宏来控制打印信息,release的时候把NSLog的打印信息都关掉
3.使用替代品来替换掉NSLog,比如CocoaLumberjack,当然自己封装一个简单的日志系统也可以

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容