Skip to content

LeanRows v0.5.0

Choose a tag to compare

@github-actions github-actions released this 06 Nov 14:00
· 8 commits to main since this release
830c7ca

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+/ or F1 opens it, and Escape closes it.

Zoom

  • Ctrl+Plus, Ctrl+Minus and Ctrl+0, or Ctrl with 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 .xlsx workbooks 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.