Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vue.js SPA displaying benchmark results - e.g. website 2.0 #10212

Open
5 tasks
Akirathan opened this issue Jun 7, 2024 · 3 comments
Open
5 tasks

Vue.js SPA displaying benchmark results - e.g. website 2.0 #10212

Akirathan opened this issue Jun 7, 2024 · 3 comments
Assignees
Labels
-compiler -tooling Category: tooling p-medium Should be completed in the next few sprints x-on-hold

Comments

@Akirathan
Copy link
Member

Akirathan commented Jun 7, 2024

Current solution (bad)

The current website with plots of all the benchmarks is a static website generated from a Jinja template by website_regen.py script hosted with GitHub pages on https://enso-org.github.io/engine-benchmark-results/.

This has many disadvantages:

  • Hard to maintain. Especially with some Javascript code in the HTML template.
  • The resulting web pages are huge and very slow to load, because they contain all the data inside Javascript embedded in the HTML.
  • The Google charts JS library used by the template is ugly and difficult to work with and with insufficient documentation.
  • It is very difficult to add any dynamic behavior like loading data on demand or comparing results of two branches.

Motivation

There are requests for new features in the current website:

  • Plot also Enterprise edition benchmarks along with Community edition.
  • Compare results from a custom branch to the results of the develop branch.
  • Display standard deviation.

It is easier to implement the current features along with the requested ones from scratch using VueJS than to add them to the current template solution.

VueJS proposal

Let's implement a single page application with VueJS and use some more responsive, sophisticated and better documented plotting library, like ChartJS. The data will be fetched from the cache directory in the same repo. We only need some index.json file that maps names of the files to their timestamps. There is no need for any sophisticated backend or a database yet. Just build static single page application with VueJS and host it on GitHub pages. Access to the cache directory in the same repo should be straightforward. The application won't be needed to regenerate on a daily basis, just when new features are added.

A prototype is being developed in https://github.com/enso-org/engine-benchmark-results/tree/vue

Benchmark data upload

The data for the benchmarks are uploaded daily by the Benchmarks Upload GH Action into the directory https://github.com/enso-org/engine-benchmark-results/tree/main/cache as JSON files. Note that this task does not need any change to the data uploading functionality.

Related

There is a branch with working (to some extent) UI. Let's finish this and make the new UI visible. These are the minimal steps that have to be done:

Tasks

Preview Give feedback

No need for any further automation right now. Being able to see latest benchmark results in the Vue.js SPA (preferably also from other than develop branch) is good enough starting point.

@Akirathan Akirathan added -tooling Category: tooling p-medium Should be completed in the next few sprints labels Jun 7, 2024
@Akirathan Akirathan self-assigned this Jun 7, 2024
@github-project-automation github-project-automation bot moved this to ❓New in Issues Board Jun 7, 2024
@Akirathan Akirathan added p-high Should be completed in the next sprint and removed p-medium Should be completed in the next few sprints labels Jun 7, 2024
@Akirathan
Copy link
Member Author

Priority is high because the results of Oracle GraalVM (Enterprise Edition) benchmarks, implemented on 2024-03-12 in #9322 are stored only as GH artifacts so far that are dropped after 3 months without any recovery or backup. The initial results are already dropped. Let's make sure they are stored permanently in engine-benchmark-results repo.

@Akirathan Akirathan added p-medium Should be completed in the next few sprints and removed p-high Should be completed in the next sprint labels Jun 7, 2024
@enso-bot
Copy link

enso-bot bot commented Jun 20, 2024

Pavel Marek reports a new STANDUP for the provided date (2024-06-18):

Progress: - Prototype of a new benchmark website in VueJS. It should be finished by 2024-07-11.

@JaroslavTulach JaroslavTulach changed the title Benchmark results website 2.0 SPA displaying benchmark results - e.g. website 2.0 Nov 7, 2024
@JaroslavTulach JaroslavTulach changed the title SPA displaying benchmark results - e.g. website 2.0 Vue.js SPA displaying benchmark results - e.g. website 2.0 Nov 7, 2024
@JaroslavTulach
Copy link
Member

JaroslavTulach commented Nov 7, 2024

Let's finish integration of this new, cool, Vue.js based SPA!

current tasklist

Added three essential tasks to finish this issue.

mergify bot pushed a commit that referenced this issue Dec 12, 2024
Modifies the [Benchmarks Upload](https://github.com/enso-org/enso/actions/workflows/bench-upload.yml) job to also upload special `cache/index.json` file that maps filenames in the cache to their timestamps.

This is necessary for #10212 but it is also good for an Enso workflow that analyses benchmarks from the locally cloned repo. (The workflow will soon be pushed to the https://github.com/enso-org/engine-benchmark-results repo)

# Important Notes
Moreover, the `Benchmarks Upload` job fails since yesterday (https://github.com/enso-org/enso/actions/runs/12269442294/job/34233007971), because there is an old workflow ID used for the engine benchmarks.

To allow more convenient testing of the Action, I have added an ability to trigger this action manually in 857c086
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-compiler -tooling Category: tooling p-medium Should be completed in the next few sprints x-on-hold
Projects
Status: 📤 Backlog
Development

No branches or pull requests

2 participants