[WIP] Parallel frontend display for the site - #2529
Draft
heinwol wants to merge 18 commits into
Draft
Conversation
andrew.zhogin@gmail.com: 3ffe80f
Otherwise build fails with deno - Proper name for type shim file for vue (I believe this format should be universal?) - Fix for parcel's inability to find jsx for vue. Can revert if needed
via a script with ast-grep
like `{{\n<identifier-without-indent>`. Some bug it tree-sitter-vue
parser i guess
from 3ffe80f when we decided to use mock values for api handling
as the newtype around `HashMap<String, HashMap<String,...>>` made it difficult to reason about what contains what. Intellisense couldn't catch everything. The more type safety the merrier ;)
in line with our nested structure
from use sites to creation sites. Also more fixes of nested structure usage
Member
|
I didn't look at the code yet, but I think that we should do this incrementally. Taking a look at how the last benchmark axis (target) was added should be useful. The first step is to show the frontend threads in the compare page, as that's the most important place. The PR that did this for target is #2272 - it has less than 100 lines (just for comparison of how complex that should be). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
It got pretty big despite not being finished still, so i decided to open a pr just to track things.
The work is based primarily on #2421 and is the second part of bringing parallel frontend metrics to rustc-perf with the first being #2491.
While the most important obvious part is adding a new dimension (new url params, database queries, deserialization, filters, etc.) some structural changes were made.
Dict<Dict<Dict<Series>>>. @ azhogin introduced this change:Dict<Dict<Dict<Dict<Series>>>>respectively. Recall also it's been decided in Parallel frontend compiler support (perf backend only) #2491 to transpose this layout tosite/frontend/src/utils/map-wrapper.ts). It's aMapunderneath with... well, more type safety. We extend this class as a form of newtype pattern, likeMap's keys are also typed. Handling of said keys in different contexts varied. Sometimes we neededprofileto be lowercased, sometimes capitalized. And we had no idea what format our input data was in. This is especially confusing to a person not familiar with the codebase. So it's necessary to enforce a single format (likeProfileorFrontendThreads) that is some kind of string wrapper, with proper casting (likesite/frontend/src/graph/data.ts: toProfilefunction).site/frontend/src/typings/{vue.ts -> vue.d.ts}to satisfy Deno linter and follow TS conventions.Of course, all this goes beyond just adding a new dimension. Unfortunately, i wasn't able to do otherwise as i was just lost in lots of bugs arising out of the blue before bringing a decent amount of lint time safety.
Some changes made by @ azhogin are left intact, for instance additional error handling in
site/frontend/src/pages/detailed-query/page.vueas well as in many other places.TODO (needs discussion)
frontend_threadstoThreads#2512;type Scenario = "full" | "incr-full" | ...) instead of branding. Will need other conversion functions;site/frontend/src/graph/data.ts: they're used outside of graphs context;site/frontend/src/pages/compare/compile/common.ts(likecomputeCompileComparisonsWithNonRelevant().profileFilter()) as a result;