Commit Graph

8 Commits (master)

Author SHA1 Message Date
Romain 3666748f04 chore: switch code coverage from Istanbul to Nyc
Istanbul is no longer maintained
3 years ago
Romain 8aa2780507 Ignore files generated during integration tests 5 years ago
Romain 03a9c9a319 refactor: themes are now standalone folders, to prepare for external loading
Every theme is made of { Handlebars + Less + Partials + Helpers + Public }
6 years ago
Romain e9e5f32970 Add test coverage + clean up build scripts 7 years ago
Romain 870b60de17 Simplify test scripts & document them in CONTRIBUTING.md 7 years ago
Romain 24b2f9bd7c Major optimisations: SQLite index + faster disk glob + new exiftool streaming
1. Move from a JSON index to a SQLite database.
  - This allows the indexing to be interrupted & resumed
  - Updating the index consumes less RAM than loading / saving an entire JSON object
  - Loading the index consumes less RAM since it can be streamed, only exacting the properties we need every time (instead of loading all EXIF data in memory, only to discard most of it later)
  - These make a big difference when processing 10,000+ photos

2. Switch from <glob> to a manual <readdir>
  - Glob would take several hundred or GB of RAM when asked to find several thousand files
  - Manual approach with <micromatch> library does the same thing in a fraction of the time / memory usage

3. Exiftool optimisations
  - Run 1 exiftool process per CPU, still in batch mode (divide all files to be read into 1 bucket per CPU)
  - Stream the exiftool output instead of buffering it in memory
7 years ago
Romain afd3915778 Add full integration test: compare galleries to previously generated snapshot 7 years ago
rprieto 62c0d09868 Initial commit 10 years ago