Я не могу найти информацию о производительности в документации по конвертации между ArrayBuffers и Blobs в Javascript. Я считаю, что стандартные методы:
const blob = new Blob([arrayBuffer])
и
const resp = new Response(blob)
const ab = await resp.arrayBuffer()
Обратите внимание, что меня интересуют только BLOB-объекты, находящиеся в памяти, а не основанные на файлах (поэтому я не O время задействовано.) Я сделал несколько моментов времени в коде: https://codepen.io/oberbrunner/pen/ExjWLWY, который показывает, что обе эти операции масштабируются во времени в соответствии с размером ArrayBuffer, поэтому они, вероятно, копируют данные. На самом деле простое создание new Response(blob)
занимает больше времени с большим двоичным объектом, если мой временной код точен Кроме того, новая функция Blob.arrayBuffer()
также выглядит как O (n), хотя она быстрее, чем способ Response
. Но пока еще не поддерживается браузерами в 2020 году.
Итак, мой вопрос: есть ли достоверная документация по ожидаемой производительности этих операций? Я просто использую их неправильно? Существуют ли более быстрые (постоянное время, нулевое копирование) способы?