Плагин ввода-вывода с плагином File работает медленно - PullRequest
0 голосов
/ 21 марта 2019

В настоящее время я работаю над приложением, которое получит и сохранит несколько фотографий и видео в локальной файловой системе. (В среднем 40 фотографий и 10 видео на пользователя)

Для этого я загружаю медиа с сервера, а затем записываю его на телефон.

Мне кажется, что процесс написания довольно медленный, и я прихожу, чтобы объяснить вам мою проблему, чтобы узнать, действительно ли это аномалия или это правильное время и что это кордова или просто ограничения Android.

Для проверки производительности я создал пустой проект Cordova, чтобы не искажать значения из-за инфраструктуры или другой задачи, которую приложение использует одновременно.

Вот функция, которая будет писать в смартфоне:

function write(blobObject) {
    t0 = performance.now();
    var path = cordova.file.externalApplicationStorageDirectory;
    window.resolveLocalFileSystemURL(path, function (directoryEntry) {
        directoryEntry.getFile('toto.iso', { create: true, exclusive: false }, function (fileEntry) {
            fileEntry.createWriter(function (fileWriter) {
                var writed_size = 0;
                var chunk_size = 0.251024;

                var writeChunk = () => {
                    fileWriter.onwrite = function() {
                        if (writed_size < blobObject.size) {
                              writeChunk();
                        }
                        else {
                            t1 = performance.now();
                        }
                    };

                    if (writed_size) {
                        fileWriter.seek(fileWriter.length);
                    }

                    var seeked_data = blobObject.slice(writed_size, writed_size + Math.min(chunk_size, blobObject.size - writed_size));

                    fileWriter.write(seeked_data);
                    writed_size += Math.min(chunk_size, blobObject.size - writed_size);
                }

                writeChunk();
            });
        }, function() {alert('error');});
    });
}

Запись файла 5MB занимает в среднем 2385ms

Запись файла 10MB занимает в среднем 4774ms

Запись файла *1024* 50MB занимает в среднем 21867ms

Как вы думаете, это мой способ поступать неправильно, и если да, то почему?

Или, как мне кажется, это просто ограничения из-за Кордовы?

Я тестирую на Honor 6X.

Большое спасибо за вашу помощь.

...