Problem
In large query result sets (e.g. 50,000+ rows x 20 columns = 1,000,000 cells), storing raw numbers as string objects (List<List<String>>) incurs significant heap overhead (~32 bytes per cell due to Dart object headers and String allocation, vs 8 bytes for a 64-bit primitive in TypedData).
Proposed Solution
- Explore compact columnar or chunked storage for large result sets where primitive numeric types (
int, double, num) are retained in primitive form or typed buffers (Int64List / Float64List) and stringified lazily only when rendered in the visible viewport window.
- Benchmark memory footprint on 100,000+ row datasets and measure UI scroll latency.
- Add test coverage for lazy formatting and type-aware cell rendering.
Problem
In large query result sets (e.g. 50,000+ rows x 20 columns = 1,000,000 cells), storing raw numbers as string objects (
List<List<String>>) incurs significant heap overhead (~32 bytes per cell due to Dart object headers and String allocation, vs 8 bytes for a 64-bit primitive inTypedData).Proposed Solution
int,double,num) are retained in primitive form or typed buffers (Int64List/Float64List) and stringified lazily only when rendered in the visible viewport window.