Repository navigation
LeanRows v0.5.0
LeanRows 0.5.0
LeanRows 0.5.0 looks and works like LeanMark 0.6.0, and sorts a large file
several times faster.
Everything from 0.4.0 works as before.
Themes
- Five themes, as in LeanMark: System, Light, Dark, Dim and Dusk. Dim and
Dusk are softer dark themes, with LeanMark's colours. - The theme button shows a coloured dot for the current theme. Its tooltip
names the theme, for example "System (Dark)", and gives the shortcut,
Ctrl+Shift+T. - With Windows high contrast on, every theme uses the system colours.
Settings and shortcuts
- The settings button, next to Open, opens a panel on the right with the
theme, the zoom and the list of every keyboard shortcut and mouse action,
sorting included.Ctrl+/orF1opens it, andEscapecloses it.
Zoom
Ctrl+Plus,Ctrl+MinusandCtrl+0, orCtrlwith the mouse wheel,
zoom the rows from 50% to 300% in LeanMark's steps. Only the rows and their
column titles zoom. The zoom is remembered.
Toolbar and tabs
- The toolbar and tabs follow LeanMark: plain buttons that show a hover, a
bordered Open button, a rounded search field with a focus ring, the "LR"
wordmark, and tabs without separators whose close mark shows on the
selected or hovered tab.
Faster sorting
Sorting keeps its limits: 16 MiB of memory, temporary files only in
%LOCALAPPDATA%\LeanRows\sort-cache, and the free-space check before it
starts.
- It merges up to 64 sorted runs at a time instead of two, so any file it can
sort needs at most two passes over its temporary data. - It writes the map from rows to their sorted places in sequence, instead of
a seek and a small write for every row. - It decides most comparisons from the first 32 bytes of each value without
reading the values again.
Measured
On one windows-2022 GitHub Actions runner, 0.4.0 and 0.5.0 built and measured
the same way (run 42051703441),
with a 10,000,000-row, 250,000,000-byte CSV sorted by its first column in text
order:
| Measure | 0.4.0 | 0.5.0 |
|---|---|---|
| Sort, core engine | 102.1 s | 16.1 s |
| Sort, the app's worker | not measured | 14.1 s |
| Sort, memory charged to its 16 MiB limit | 2.6 MiB | 6.6 MiB |
| Sort, temporary disk at its peak | 2,441 MiB | 2,441 MiB |
| Start to input idle, no file | 59 ms | 62 ms |
| Start to input idle, the CSV open | 91 ms | 104 ms |
| Peak working set, the CSV open | 16.2 MiB | 16.3 MiB |
| Executable size | 918,528 bytes | 986,624 bytes |
The sort uses 4 MiB more memory while it merges, for the 64 read pages. The
earlier maintainer's-laptop figure of about 6 minutes for 10 million rows was
measured in the app; this runner is faster, so compare the two columns, not
the laptop.
Known gaps
- Sorting and Find do not work on
.xlsxworkbooks yet. Sorting says so
instead of sorting. - A number with a very large exponent, such as
1e999999999999999999999, makes
a numeric sort fail with a message instead of placing it. - The installer and the Store package do not register
.xlsx. - A file opened while zoomed starts with the default column widths.
- Fonts, rounded corners and circles cannot be drawn exactly as LeanMark's
browser draws them; Windows uses its own font and draws without smoothing. - The full local QA run with a receipt, as recorded for 0.2.0, has not been
run for 0.5.0.