- vừa được xem lúc

Sử dụng Instrument để phân tích App Launch trong iOS

0 0 4

Người đăng: Nguyễn Quang

Theo Viblo Asia

Qua bài này các bạn sẽ nắm được:

  • App Launch và các kiểu launch (phần 1).
  • Các phase trong launch app và cách optimize(phần 1).
  • Môi trường đo thời gian app launch (phần 1).
  • Sử dụng Instrument để phân tích ứng dụng.
  • Thu thập thời gian app launch hằng ngày.

Tiếp nối phần 1 của chủ đề Tối ưu App launch trong iOS, phần 2 này sẽ đi vào cách sử dụng Instrument để phân tích quá trình app launch, xem ảnh hưởng của source code của bạn tác động đến quá trình launch app.

Profile app và Instrument

Profile app là gì

Profile app là việc đi sâu vào phân tích ứng dụng với mục đích tối ưu hoá performance, xác định các vùng ảnh hưởng của source code và đảm bảo rằng ứng dụng có đang chạy đúng như mong muốn hay không. Quá trình phân tích này bao gồm việc đo rất nhiều số liệu như mức độ sử dụng CPU, pin, network, tiêu thụ bộ nhớ, các luồng multi thread được tạo, quá trình allocate, deallocate các biến, animation FPS, memory leaks, ... Công cụ chính để profile app iOS là công cụ Instrument của Xcode.

Mở Instrument: mở Xcode, chọn Xcode trên tabbar menu > Open Developer Tool > Instruments.

Các template hữu ích phổ biến trong Instrument:

  • App launch: Phân tích quá trình app launch để đảm bảo người dùng hài lòng ngay từ cái nhìn đầu tiên.
  • Time Profile: Phân tích mức sử dụng CPU và giúp xác định các luồng bị block trong quá trình runtime.
  • Allocations: Theo dõi việc phân bổ bộ nhớ và giúp xác định memory leaks cũng như mức sử dụng bộ nhớ quá mức.
  • Energy log: Theo dõi việc sử dụng pin để đảm bảo ứng dụng của bạn tiết kiệm năng lượng.
  • Network: Phân tích hoạt động mạng để đảm bảo sử dụng mạng hiệu quả.
  • Core animation: Phân tích hiệu suất rendering ứng dụng để đảm bảo hoạt ảnh và chuyển tiếp mượt mà.

Các bước profile app

  • Config build profile: Để thu thập được các số liệu đúng nhất, cần profile app ở mode release, và build trên device thay vì simulator.

    Chọn Scheme > Edit Scheme > Profile > Chọn Release cho Build Configuration. Screenshot 2024-08-12 at 15.02.02.png

  • Profile: Dùng tổ hợp phím Comand + I, hoặc đưa chuột đến option Run, nhấn giữ sẽ hiển thị các options sau, chọn Profile (nhấn Shift để hiện chú thích cho các options) Screenshot 2024-08-12 at 15.06.17.png

  • Khi build Profile xong, sẽ hiển thị tool Instrument, chọn App Launch template > Choose Screenshot 2024-08-12 at 15.13.32.png

  • Chọn Record để ghi lại quá trình launch app và các thao tác bạn tương tác với ứng dụng. Ấn Stop để kết thúc quá trình ghi. Screenshot 2024-08-12 at 15.16.08.png

  • Đây là kết quả của quá trình record. Các khối màu tím, khối màu xanh là gì?, các bạn xem lại ở phần 1 nhé here

  • Screenshot 2024-08-12 at 16.30.35 1.png Để nhìn trực quan và filter được các ảnh hưởng từ source code của bạn, có thể làm theo các bước sau

    • Chọn Target [1] là ứng dụng của bạn để xổ xuống các thread
    • Chọn Main Thread [2] là UI Thread ảnh hưởng trực tiếp tới thời gian launch và nhận tương tác người dùng.
    • Ở panel detail [3], chọn Profile.
    • Chọn bộ lọc Call Tree [4], chọn 'Hide System Libraries'
    • Heaviest Stack Trace [5] là nơi hiển thị các tác vụ nặng được sắp xếp theo thời gian giảm dần. Bạn có thể trace theo các tác vụ này để tìm được nguyên nhân kéo dài thời gian launch app.
    • Ở cột Symbol Name, click vào các task được đánh dấu "specialized" [6]

    Screenshot 2024-08-12 at 16.45.36.png

Tới đây là dễ dàng hơn rất nhiều rồi, Instrument hiển thị thời gian của các dòng lệnh >= 5ms để bạn tự đưa ra quyết định xem nên tối ưu ở đâu. Cách tối ưu như nào mình đã giới thiệu ở phần 1, dù phần lớn dựa vào kinh nghiệm của mỗi developer nhưng qua bài viết này chắc chắn sẽ cho các bạn cái nhìn tổng quan, dễ dầng tiếp cận hơn với công cụ phân tích và không còn mơ hồ hay sợ hãi khi nhắc đến việc tối ưu performance.

Tổng kết phần 2

Qua bài viết này, bạn đã biết cách Profile app qua Instrument, xem được thời gian của các task vụ nặng, từ đó đưa ra các giải pháp tối ưu để giảm thời gian launch app. Nội dung tiếp theo (Thu thập thời gian app launch hằng ngày) sẽ được đề cập trong phần 3 của series. See ya! Tham khảo WWDC 2019: https://developer.apple.com/videos/play/wwdc2019/423

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 281

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 206

- vừa được xem lúc

Swift: Tạo custom phép toán tử (Operator) của riêng bạn!

Swift cho phép bạn tạo các toán tử có thể tùy chỉnh của riêng bạn. Điều này đặc biệt hữu ích khi bạn xử lý các loại dữ liệu của riêng mình. Operator Types in Swift. Có năm loại toán tử chính trong Swift.

0 0 56

- vừa được xem lúc

Chương 6 Protocol oriented programming.

Cuốn sách này là về lập trình hướng protocol. Khi Apple thông báo swift 2 ở WWDC 2015.

0 0 46

- vừa được xem lúc

Ví dụ về UIActivityViewController

Trên iOS, UIActivityViewController cung cấp giao diện thống nhất để người dùng chia sẻ và thực hiện các hành động trên văn bản, hình ảnh, URL và các mục khác trong ứng dụng. let string = "Hello, world!". let url = URL(string: "https://nshipster.com").

0 0 58

- vừa được xem lúc

Quản lý self và cancellable trong Combine.

. . Công việc quản lý bộ nhớ memory management thường trở nên phức tạp khi chúng ta thực hiện các tác vụ bất đồng bộ asynchronous vì chúng ta thường phải lưu giữ một số object nằm ngoài scope mà object được define trong khi vẫn phải đảm bảo được việc giải phóng object đó được thực hiện đúng quy trìn

0 0 41