Skip to content

geotiff: Don't dynamic import tiny decompressors? #428

@kylebarron

Description

@kylebarron

Because of our dynamic import approach

DECODER_REGISTRY.set(Compression.Deflate, () =>
import("./codecs/deflate.js").then((m) => m.decode),
);
DECODER_REGISTRY.set(Compression.DeflateOther, () =>
import("./codecs/deflate.js").then((m) => m.decode),
);
DECODER_REGISTRY.set(Compression.Lzw, () =>
import("./codecs/lzw.js").then((m) => m.decode),
);
DECODER_REGISTRY.set(Compression.Zstd, () =>
import("./codecs/zstd.js").then((m) => m.decode),
);
// DECODER_REGISTRY.set(Compression.Lzma, () =>
// import("../codecs/lzma.js").then((m) => m.decode),
// );
// DECODER_REGISTRY.set(Compression.Jp2000, () =>
// import("../codecs/jp2000.js").then((m) => m.decode),
// );
DECODER_REGISTRY.set(Compression.Jpeg, () => Promise.resolve(decodeViaCanvas));
DECODER_REGISTRY.set(Compression.Jpeg6, () => Promise.resolve(decodeViaCanvas));
DECODER_REGISTRY.set(Compression.Webp, () => Promise.resolve(decodeViaCanvas));
DECODER_REGISTRY.set(Compression.Lerc, () =>
import("./codecs/lerc.js").then((m) => m.decode),
);

We dynamically import all decompressors.

But some of these are so tiny. It probably doesn't make sense to dynamic-import modules that are less than one KB

examples/cog-basic build: computing gzip size...
examples/cog-basic build: dist/assets/__vite-browser-external-BFYxMWmi.js      0.60 kB
examples/cog-basic build: dist/index.html                                      0.68 kB │ gzip:   0.40 kB
examples/cog-basic build: dist/assets/LercDecode.es-CRAYzUQE.js                9.78 kB
examples/cog-basic build: dist/assets/worker-DD0C4jpX.js                      15.65 kB
examples/cog-basic build: dist/assets/lerc-wasm-c5ullBf6.wasm                116.67 kB │ gzip:  31.67 kB
examples/cog-basic build: dist/assets/index-DwUhsmFz.css                      69.92 kB │ gzip:  10.05 kB
examples/cog-basic build: dist/assets/__vite-browser-external-FmFgRqLi.js      0.03 kB │ gzip:   0.05 kB
examples/cog-basic build: dist/assets/utils-D5pzfZ0K.js                        0.16 kB │ gzip:   0.14 kB
examples/cog-basic build: dist/assets/deflate-_RGbatBj.js                      0.42 kB │ gzip:   0.28 kB
examples/cog-basic build: dist/assets/lerc-BnppmP5_.js                         0.72 kB │ gzip:   0.43 kB
examples/cog-basic build: dist/assets/zstd-CkXvgKAR.js                         7.13 kB │ gzip:   3.47 kB
examples/cog-basic build: dist/assets/LercDecode.es-Dh2o8cSh.js                9.80 kB │ gzip:   4.31 kB
examples/cog-basic build: dist/assets/lzw-CjIMRdiI.js                         15.38 kB │ gzip:   7.94 kB
examples/cog-basic build: dist/assets/maplibre-gl-DPd2dbYl.js              1,023.02 kB │ gzip: 276.98 kB
examples/cog-basic build: dist/assets/index-CrWuFo2J.js                    1,198.73 kB │ gzip: 360.51 kB

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions