2009-09-28 34 views
27

Tôi định cấu hình ứng dụng iPhone của mình theo mục tiêu và theo Công cụ 65% thời gian được sử dụng trong mach_msg_trap.Làm thế nào để tìm hiểu những gì mach_msg_trap chờ đợi?

Tôi có một chuỗi nền chạy mãi mãi và gửi kết quả về chủ đề chính bằng cách sử dụng performSelectorOnMainThread:withObject:waitUntilDone:, cứ sau 2 giây một lần. Tôi không chờ đợi cho đến khi hoàn thành.

Trả lời

24

Tắt ứng dụng của tôi không thực sự chi tiêu 65% thời gian của nó ở chức năng mach_msg_trap. Đó là một lỗi cấu hình trong các thiết bị của tôi.

Công cụ Sampler mặc định là Tất cả các số mẫu, điều này sẽ đo lường tất cả các chuỗi bất kể trạng thái của chúng.

Thay vào đó, hãy chuyển sang Chạy Thời gian mẫu sẽ phản ánh khối lượng công việc thực tế hiện tại. Screenshot of Instruments http://developer.apple.com/library/mac/qa/qa2009/images/qa1619_running_sample_times.png

+1

Nguồn: http://developer.apple.com/mac/library/qa/qa2009/qa1619.html – Nickolay

+2

tất cả các liên kết đều bị hỏng ở đây – grane2212

2

Nếu bạn không mong đợi chủ đề chính của bạn phải làm bất cứ điều gì khác ngoài việc chờ chủ đề nền này (hoặc chờ người dùng nhập vào) không có gì phải lo lắng - ứng dụng của bạn không có gì để làm hầu hết thời gian .

Nếu bạn đang mong đợi chủ đề chính để chủ động làm điều gì đó khác, vui lòng cập nhật câu hỏi của bạn để mô tả điều đó. Trong trường hợp này, bạn có thể muốn xem các ngăn xếp cuộc gọi đầy đủ để mach_msg_trap vì nó thường ở dưới cùng của một ngăn xếp cuộc gọi nơi thời gian thực thải là tiếp tục lên.

+0

Tôi không mong đợi chủ đề chính của mình thực hiện nhiều ngoại trừ nhận bản cập nhật và vẽ lại màn hình sau mỗi 2 giây. Tuy nhiên, tôi mong đợi thread nền của tôi để có tất cả các chu kỳ đồng hồ cuối cùng còn sót lại. – PeyloW

+0

Tôi vẫn nghĩ rằng nó có thể là giá trị nó để kiểm tra callstack trên mach_msg_trap chỉ để kiểm tra lại giả định của bạn về rằng các chủ đề chính chỉ nên được chạy không tải. – nall

Các vấn đề liên quan