mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
fa6b57855e
Summary: Adds `@functools.lru_cache` to `ts_to_dt` and `ts_to_date` which are used in `_make_rich_value` in Date/DateTime columns, i.e. every time such a column is accessed in a formula. I noticed that these operations are surprisingly expensive while working on https://phab.getgrist.com/D4075. This is just an easy way to potentially significantly speed up certain docs and formulas. Test Plan: Put this code in an engine test case: ``` def test_(self): self.apply_user_action(["AddTable", "Table1", [ {"id": "A", "type": "DateTime:America/Chicago"}, ]]) self.add_records("Table1", ["A"], [ [i] for i in range(1000) ]) formula = "for _ in range(1000): $A\nreturn 1" import time start = time.time() self.add_column( "Table1", formula, type="Any", isFormula=True, formula=formula ) elapsed = time.time() - start print(f"Took {elapsed:.2f} for formula {formula}") ``` The time goes from ~10s to ~1s. Similar tests showed no noticeable slowdown when caching had no effect. Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D4099 |
||
---|---|---|
.. | ||
docker | ||
grist | ||
gvisor | ||
pyodide | ||
bundle_as_wheel.sh | ||
gen_js_schema.py | ||
install_tz.js | ||
MANIFEST.in | ||
requirements3.in | ||
requirements3.txt | ||
requirements.txt | ||
run.sh | ||
setup.py | ||
watch.sh |