Skip to content
This repository was archived by the owner on Mar 13, 2020. It is now read-only.
This repository was archived by the owner on Mar 13, 2020. It is now read-only.

Benchmarks #1

@rebornix

Description

@rebornix

To get a better understanding the overall performance of opening/loading a notebook with different implementations, we will do some benchmark with different types of Notebook files, the matrix is

  • Platform
    • Python Notebook
    • Azure Data Studio
  • Notebook
    • Regular size sample
      • 10 code cells and 20 markdown cells
    • Medium size sample with duplications
      • 80 code cells and 200 markdown cells
    • Large file
      • 545 code cells and 1292 markdown cells

There are a couple of factors that affect the overall performance. To make sure we get the right numbers, we need to track the benchmarks in following aspects

  • Overall loading time, from user clicking the file to a fully usable state
  • Initialization time, from user clicking to first paint.
  • View/Editor loading time, from first pain to a fully usable state.

Results

All tests are run multiple times to get fair results. Benchmark profiles are measured by Chrome Dev Tools Performance tool. Before each benchmark, garbage is always collected. For more details of each benchmark's water flow, please read the comments below.

Platform File Size Initialization Cells Rendering Total
Python Regular 3.88s 1.84s 5.75s
Medium 4s 6.28s 11s
Large 4.1s 74s 80s
ADS Regular 250ms 443ms 0.8s
Medium 210ms 5s 6.43s
Large 600ms 108s 120s

Interesting findings:

  • Python notebooks always take 3-4 seconds to initialize the webview while ADS opens file almost instantly
  • Once the initiation finishes, the rendering time is similar. This is as expected because most of the time is spent in rendering Monaco Editor and markdown content
  • For the large file, Python's impl opens the file more stably while ADS often freezes and takes longer to open the file. Once opened, I can scroll with noticeable latency in both but the Python one is more usable.
    • The reason behind this might be that Python's notebooks is running in a webview which runs in its own process.
  • No virtualization in both solutions.
  • Memory usage are similar.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions