Comments (6)
I'm removing the available tag from here, as I don't feel this is well scoped enough to be immediately actionable. I think we need more research into what this looks like, and maybe for the timeline to stabilize a bit more in its implementation.
from profiler.
Here is an example profile where I really wanted FPS information:
https://perfht.ml/2ClU1wJ
I profiled two tabs of perf.html. The first with React 15, the second with React 16, and I was in the stack chart using the mouse wheel. I wanted to see if there was any better FPS between the two as I was scrolling. It's not immediately obvious.
from profiler.
I have a use-case as simple as "I have two profiles and would like to know the average fps of each". For this, I don't need a more detailed timeline, just a gross fps number.
However, a frame time histogram would also be great.
from profiler.
What's the difference between the marker information in the profile and the requestAnimationFrame loop in the content of a page? I assume the profile can access markers for this information. For some reason the devtools has a performance framerate actor that accumulates requestAnimationFrame timings manually... Although it might have something to do with displaying framerates as they happen. I haven't dug into that part as much yet. I know jsantell was mentioning that the framerates are unreliable in the devtools perf tool.
https://dxr.mozilla.org/mozilla-central/source/devtools/server/performance/framerate.js
from profiler.
Interesting, I did not know that the devtools were using requestAnimationFrame in the content in order to get refresh driver information. The problem with requestAnimationFrame is that it affects what you're measuring: it will cause the refresh driver to fire at the full rate.
If you just look at the marker information, then you only see the refresh ticks that would actually have occurred; the observations are unaffected by the act of observing.
However, you usually want to know both the rate at which you painted and also the rate at which you could have painted. The requestAnimationFrame approach gives you the latter piece of information. But, since we know how our event loop + refresh driver works in Gecko, we can also obtain that information using a different data source: the "responsiveness" numbers on the samples.
For example: If the responsiveness numbers of all samples in a range are lower than 16ms, then it means that no event had to wait for longer than 16ms during that time. Refresh driver ticks are run from regular events that also go through the event loop, so all required refresh driver ticks would also have happened within 16ms, and we would have reached a refresh driver tick frequency of 60Hz.
from profiler.
I'm going to tentatively label this to be included in the Timeline panel.
from profiler.
Related Issues (20)
- No way to read long marker label names on marker chart HOT 1
- Consider putting CORS-accessible JS in the source view
- It's not easy to get the names of functions that has namespaces / class names that are taking a lot of character space (e.g. due to generic parameters) HOT 2
- Provide prebuilt release for airgapped networks
- 无法读取或解析其中的分析记录。 HOT 14
- Make it easy to find the line that calls a function HOT 1
- respect prefers-color-scheme
- Feature: Ability to select multiple rows in the marker table and copy their contents HOT 1
- Feature: Focusing and excluding by modules
- Avoid the need for `perf script` when importing from perf HOT 5
- Error: Unserializing the profile failed: Error: Unable to parse a Gecko profile of version 29 HOT 1
- Feature: Auto-classification/labeling of threads based on rules & shared library of thread func (general purpose profiler) HOT 1
- 使用面具功能就好啦 HOT 1
- A 24MB profile is slow to analyse and takes 2.4GB RAM to open
- Remove the active tab filtering from the activity graph
- Order global tracks by the CPU score
- Remove the old active tab timeline from the codebase
- Make the cpu score visible in the track selection list
- Consider adding the ability to shrink some tracks
- Do not filter the samples and markers by the active tab, only filter the tracks in the active tab view in the tab selection
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from profiler.