正在启动 Web Worker 进行异步压缩测试...
';
const compressor = new StorageCompressor();
const largeData = generateMockMusicProject();
const startTime = performance.now();
compressor.compressAsync(largeData).then(result => {
const endTime = performance.now();
const duration = (endTime - startTime).toFixed(2);
resultDiv.innerHTML += `
初始化上传测试...
';
// 模拟上传
const totalChunks = fileSizeMB;
let uploadedChunks = 0;
const startTime = performance.now();
try {
await manager.simulateUpload(totalChunks, {
networkCondition,
onProgress: (progress) => {
uploadedChunks = Math.floor(progress * totalChunks);
progressBar.value = progress * 100;
document.getElementById('uploaded-chunks').textContent = `${uploadedChunks} / ${totalChunks}`;
const elapsed = (performance.now() - startTime) / 1000;
const speed = (uploadedChunks / elapsed).toFixed(2);
document.getElementById('upload-speed').textContent = `${speed} MB/s`;
const remaining = totalChunks - uploadedChunks;
const eta = remaining / speed;
document.getElementById('eta').textContent = eta < 60
? `${eta.toFixed(0)}秒`
: `${(eta / 60).toFixed(1)}分钟`;
},
onComplete: (stats) => {
const duration = ((performance.now() - startTime) / 1000).toFixed(2);
resultDiv.innerHTML = `
总耗时:${duration}s
平均速度:${stats.avgSpeed.toFixed(2)} MB/s
成功分片:${stats.successfulChunks}
失败分片:${stats.failedChunks}
重试次数:${stats.totalRetries}
并发峰值:${stats.peakConcurrency}
`;
updateStats(1, 1);
}
});
} catch (err) {
resultDiv.innerHTML = `