12

Tôi đang vẽ một số hình dạng (cung, đường thẳng, v.v.) để sử dụng requestAnimationFrame. Không có gì quá ưa thích, nhưng tôi nhận thấy một số hình ảnh động giật thường xuyên. Tôi đã lược tả bằng cách sử dụng thanh tra Timeline trong các công cụ dành cho Chrome và thấy một số lượng lớn thời gian không hoạt động trên mỗi khung hình, một số trong đó giảm FPS xuống dưới 60 (xem ảnh chụp màn hình). Có nguyên nhân hoặc độ phân giải đã biết cho điều này không?Thanh "nhàn rỗi" lớn trong công cụ Chrome dev Khung thời gian

frames with lots of idle time

+1

Các câu hỏi tương tự: [một] (http://stackoverflow.com/questions/12302286/what-causes-chrome-timeline-frame-to-have-so-much-empty-white-space?rq=1) , [hai] (http://stackoverflow.com/questions/11423330/web-inspector-profiling-with-frames-finding-the-cause-of-performance-problems), [ba] (http: // stackoverflow.com/questions/18257206/extra-render-time-in-chrome-dev-tools-timeline-frames). Không có thông tin hữu ích. Một vài tài liệu tham khảo cho [bài đăng G + này của Nat Duca] (https://plus.google.com/+NatDuca/posts/BvMgvdnBvaQ?e=-RedirectToSandbox), nhưng tôi không làm gì với các biến đổi 3D, vì vậy tôi không không nghĩ rằng nó có thể áp dụng được. – endemic

+1

Từ [tài liệu DevTools] (https://developers.google.com/chrome-developer-tools/docs/timeline#frames_mode): "Bạn có thể nhận thấy các vùng của khung có màu xám nhạt hoặc trong suốt (trống). 1. Các hoạt động không được thiết kế bởi DevTools 2.) Thời gian không hoạt động giữa các chu kỳ làm mới màn hình. Các khung trong bản ghi bên dưới hiển thị cả hoạt động không được định trước và thời gian không hoạt động. " Tuy nhiên, điều đó không thực sự giải thích cách khắc phục sự cố. Nếu phần rõ ràng của khung là thời gian rảnh, tại sao nó gây ra khung để bỏ qua? – endemic

+0

Tôi có cùng một vấn đề; khung hoàn thiện như 3ms nhưng với thời gian nhàn rỗi điên, đôi khi 200ms; đưa cái gì? công cụ dev bị hỏng? – AlexG

Trả lời

4

Vẽ hình dạng cho canvas rõ ràng là tốn kém tính toán và phải nằm trong "hoạt động không được DevTools thiết kế". Tôi đã giải quyết vấn đề hiệu suất của mình trước tiên bằng cách vẽ hình dạng vào bộ nhớ cache trên màn hình, sau đó sử dụng drawImage để sao chép trở lại canvas chính.

+0

Bạn có thể đăng tiểu sử dòng thời gian của mình như thế nào sau khi cải tiến không? – sethro

+0

@sethro Dường như giao diện đã thay đổi một chút, nhưng [đây là một ảnh chụp màn hình tương tự] (http://imgur.com/0WQPg8b). Lưu ý rằng tính toán/hiển thị giảm tốt trong mỗi khung ~ 16ms. – endemic

1

So sánh các đỉnh đó với biểu đồ bộ nhớ. Theo kinh nghiệm của tôi, gai lớn nhàn rỗi dường như trùng với thu gom rác thải.

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