Categorías: Todo - components - performance - functions - services

por Samy Sarem hace 6 meses

100

2022-01-25 Performance plan

The document outlines a detailed performance plan focusing on several key areas including multi-threading, cell event handling, and the usage of various functions within a spreadsheet environment.

2022-01-25 Performance plan

2022-01-25 Performance plan

Cool stuff

Culture
Cell buttons
Dyanimc array formulas and spilling
List operator
Let for global variables declaration

Components

Async custom formula
Batching and Queue

Analysis

Reducing

Execution

Services

Pre-fetch

SQLite

Using another layer on top
Indexing

Steps

Reprendre tests d'origine
load dictionary in-memory
Change blocks / experiments
Demonstrate SpreadJS needs to work on their side

Experiments

Spreadjs event ?
Use sync functions
Way to retrieve row and cell
How to deal with dependencies
Acceptable that the UI freeze
Bypass workflow
direct call to dictionary
Replace SQLite with flat file / dictionary
Keep workflow

Paths

see example of server call
getDirtyCells & Cells status
doNotRecalculateAfterLoad
useful functions
sheet.setArray & sheet.setFormulaArray
sheet.setValue
sheet.getCell
isBranch
findTestArgument
findBranchArgument
Can we get a reference to dependent and precedents formulas (other cells or inline)
getPrecedents and getDependents
Is there a way to find the address of a cell / parent caller
isContextSensitive property in sync functions

POC in react

Sample in javascript

check isContextSensitive here

events when formula is refreshing ?

UserFormulaEntered

not when moved

not when refreshed

When a new formula is inserted

Edit

EditStarting

EditEnding

EditEnded

EditChange

Subtopic

Not triggered by formula reference

When we edit the cell content manually

OnKeyPress

Drag-copy / move event

DragMerging

DragMerged

DragFillBlockCompleted

DragFillBlock

Copy or increment

DragDropBlockCompleted

DragDropBlock

Move cells

Range changes

Cell Data Changes

When the data in a cell changes

Check context and events usage here
Other system than SQLite
Multi-threading

Caching

Smart & statistics

SpreadJS engine

Async formula perf