V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
euan1022
V2EX  ›  iDev

开源美图内部使用的 iOS 性能优化/调试辅助工具及交流

  •  
  •   euan1022 ·
    EuanChan · 2019-04-23 12:43:01 +08:00 · 11499 次点击
    这是一个创建于 2037 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我们开源了 iOS 下的性能优化 /调试辅助工具 MTHawkeye,https://juejin.im/post/5cbd7be9f265da03555c7e21

    想交流下其他 iOS 开发者的一些习惯

    • 平时 Instrument 的使用情况
    • 自动化测试阶段关注的一些指标
    • 线上目前比较棘手的性能问题

    先说我们之前的情况

    • Instrument 能深入使用的人占比不太高,项目开发周期原因很多时候也是等性能测试的同学反馈才会去排查优化
    • 自动化之前只使用 TencentGT 收集的基本数据
    • 线上对 OOM 类的崩溃处理比较棘手

    不知道大家平时遇到的情况大概是怎样,平时一般会通过什么方式来改善。

    11 条回复    2019-04-25 14:11:32 +08:00
    epkT6QJ3RSaz6AnJ
        1
    epkT6QJ3RSaz6AnJ  
       2019-04-23 13:20:45 +08:00
    我一般遇到的性能问题,主要集中在长列表写法问题。解决的化,要不 cr 阶段严格点,要不自己维护一套组件库。依赖外部工具倒是可以能有个提醒作用,但是也不能从根本上解决问题。
    euan1022
        2
    euan1022  
    OP
       2019-04-23 13:38:33 +08:00
    @epkT6QJ3RSaz6AnJ 我们团队协作的问题会多些,有些组件可能在不同团队维护。比较依赖自动化阶段的监控
    eric1202
        3
    eric1202  
       2019-04-23 13:48:59 +08:00
    Instrument 没有遇到明显性能问题都不会用
    euan1022
        4
    euan1022  
    OP
       2019-04-23 14:32:34 +08:00
    @eric1202 那是主要跟进线上 APM 的性能反馈吗
    epkT6QJ3RSaz6AnJ
        5
    epkT6QJ3RSaz6AnJ  
       2019-04-23 14:38:42 +08:00   ❤️ 1
    @eric1202 除非能像前端一样有 e2e 测试保证,一般很少人去自己专门看自己性能监控,还有一些工具能监控线上某些重点页面的耗时,能及时上报看大盘优化。
    autotesting
        6
    autotesting  
       2019-04-23 14:39:28 +08:00
    @euan1022 自动化阶段的监控主要监控哪些指标呢?能否简单介绍一下实现流程吗?
    euan1022
        7
    euan1022  
    OP
       2019-04-23 15:59:39 +08:00
    @autotesting 我们目前监控的主要是内存使用和耗时方面。基本的实现都是依靠 hook 来跟踪,细节比较多,目前还没整理完整的实现文档,有兴趣可以直接看源码哈。

    内存分了两个模块,一个主要监测能捕获到的一些未释放对象;另一块的话类同 Instrument 的 Allocations,记录了完整的内存占用,在自动化测试内存值异常的时候可以直接用这些数据来快速排查问题。

    耗时的话,主要监控的是启动、页面打开和一些关键操控流程的耗时。防止在开发过程中有开发新加一些耗时的方法到主线程。 可以参考下开发阶段的 [使用文档]( https://github.com/meitu/MTHawkeye/blob/develop/doc/time-consuming/ui-time-profiler-cn.md),自动化阶段的话基本就只取数据。
    euan1022
        8
    euan1022  
    OP
       2019-04-23 16:00:39 +08:00
    @autotesting 其他的一些指标大多比较通用,第三方 APM 有的基本也都会覆盖
    yichengfzu
        9
    yichengfzu  
       2019-04-23 19:54:49 +08:00 via iPhone
    内存泄漏主动提示很实用~
    eric1202
        10
    eric1202  
       2019-04-24 08:53:43 +08:00
    @euan1022 是的
    epkT6QJ3RSaz6AnJ
        11
    epkT6QJ3RSaz6AnJ  
       2019-04-25 14:11:32 +08:00
    自动反解 dsym 错误日志也实用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2922 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 15:04 · PVG 23:04 · LAX 07:04 · JFK 10:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.