アプリにドラッグされている曲を処理するアプリを作成しています。を使用しfile.size
てファイルのサイズを取得すると、この値を取得するのに約1500ms(avg)かかります。もっと速い方法はありますか?時間(およびメモリ)がかかる理由は理解していますが、HTML5でファイルを処理するのは初めてなので、プロセスを高速化できるかどうかわからないことがあるかもしれません。
同じことがファイルシステムAPIにも当てはまります。それを介してファイルを呼び出して呼び出すとfile.size
、同様の時間がかかります。
PSconsole.time()
コードを追加することで、この結論に達しました。
これがコードです(大幅に削除されています)
fileSystem.root.getFile(id, {}, function(fileEntry) {
fileEntry.file(function(audioTemp) {
console.time(1);
console.log(audioTemp.size);
console.timeEnd(1)
});
});
これはファイルシステムAPIの例です。これは(明らかに)id
それが機能するためにそこにあるという名前のファイルを必要とします。以下はD&Dファイルの入力コードです
function onChangeAddSongsInput() {
var files = document.getElementById('addSongsInput').files;
for(var i=0; i<files.length; i++) {
console.time(1);
console.log(files[i].size);
console.timeEnd(1)
}
}
編集
私はAMDと同等のコア2デュオ、2.7 GHz、2ギガのRAM、win7x64を使用しています。私が信じるスペックは実際には十分にまともです。ですから、私のマシンで何かが十分に時間がかかる場合、私はそれをノーゴーと見なします。
これは、私のアプリの主要なバグ修正のブロッカーです。私は本当にこの長い間修正を含めて出荷したいと思います。バウンティを設定することはできません(まだ)バウンティが設定されるまでに最小限の時間があります。
編集
私はいくつかのテストを行いましたが、クロムがメタデータからサイズを読み取るのではなく、サイズを計算するため、非常に時間がかかります。これがテスト結果です。
ファイルが大きいほど時間がかかり、2回目に呼び出された場合はキャッシュを使用し、ファイルをロードしません。だから今..どうすればこの時間を減らすことができますか?サイズは私のアプリでは重要な情報ですが、ファイルごとにユーザーのアップロード速度を約1.5秒遅くするほど重要ではない可能性があります。ライブラリのインポートを計画していますが、100曲程度追加するときにこの時間を短縮するのに非常に役立ちます。今回は、アプリの応答時間に大きな影響を与えます。