Вы правильно заметили, что передача объекта веб-работнику стоит столько же, сколько и его сериализация. Это связано с тем, что веб-работникам также необходимо получать сериализованные данные, а не нативные JS объекты, поскольку объекты экземпляра привязаны к потоку JS, в котором они были созданы.
Применимо универсальное решение c ко многим проблемам программирования: выбрал правильные структуры данных при работе с большими наборами данных . Когда данные становятся больше, лучше жертвовать простотой доступа к производительности. Таким образом, выполните любое из следующих действий:
Храните данные в indexedDB
Если ваш большой объект содержит списки записей одного типа, используйте индексированную БД для чтения и записи, и вам не нужно беспокоиться о сериализация вообще. Это потребует рефакторинга вашего кода, но это правильное решение для больших наборов данных.
Хранение данных в ArrayBuffer
Если ваши данные в основном имеют значения фиксированного размера, используйте ArrayBuffer. ArrayBuffer можно скопировать или перенести на веб-работника практически мгновенно, и если ваши записи имеют одинаковый размер, сериализация может выполняться параллельно. Для доступа вы можете написать простые классы-обертки, которые преобразуют ваши двоичные данные во что-то более удобочитаемое.