【问题标题】:iPhone/iPad : Does having many NSLog() calls affect app preformance or memory?iPhone/iPad:有很多 NSLog() 调用会影响应用程序的性能或内存吗?
【发布时间】:2011-09-18 12:03:43
【问题描述】:

我想知道有很多 NSLog() 调用是否会影响应用程序的性能或内存。 有谁知道这样的事情吗?

我想在我的应用程序(很多)的每个函数中调用 NSLog() 以便我可以看到 跟踪问题后的崩溃日志。

谢谢。

【问题讨论】:

    标签: iphone performance ipad nslog


    【解决方案1】:

    是的。所以我在我的 pch 文件中定义了这个。

    #ifdef DEBUG
    #   define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
    #else
    #   define DLog(...)
    #endif
    
    // ALog always displays output regardless of the DEBUG setting
    #define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
    

    我没有使用 NSLog,而是使用 DLog 和 ALog。

    (注意或版权:我很久以前从其他一些我不记得的 SO 帖子中获得了此代码。从我的 sn-p 库中再次粘贴它)

    【讨论】:

    • 是的,对于您希望保留在代码中进行调试的 NSLog,您应该定义允许编译出“调试”的宏。当然,有些应该总是被记录下来,所以那些使用不同的宏。添加__PRETTY_FUNCTION____LINE__ 可以减少显式识别您在代码中的位置的需要。 (没有什么比“我遇到错误”消息更无用的了。)
    • 这似乎是这个想法的起源,对于那些想知道它的演变的人来说:iphoneincubator.com/blog/debugging/…
    【解决方案2】:

    “取消定义”NSLog 的另一个简单解决方案

    在 .pch 文件中:

    #ifndef DEBUG
    #define NSLog(...) /* */
    #endif
    

    【讨论】:

      【解决方案3】:

      是的,它会降低性能,特别是如果函数应该花费很短的时间,NSLog(这是一个 I/O 进程)会使其花费比预期更多的时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-06-19
        • 1970-01-01
        • 2022-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多