Fix speed calculation on media dump and scan.

This commit is contained in:
2019-01-27 17:47:40 +00:00
parent 6b1aeb6cbb
commit 53f2f50cbe
11 changed files with 175 additions and 81 deletions

View File

@@ -280,8 +280,10 @@ namespace DiscImageChef.Core.Devices.Dumping
if(resume.NextBlock > 0) dumpLog.WriteLine("Resuming from block {0}.", resume.NextBlock);
start = DateTime.UtcNow;
double imageWriteDuration = 0;
bool newTrim = false;
double imageWriteDuration = 0;
bool newTrim = false;
DateTime timeSpeedStart = DateTime.UtcNow;
ulong sectorSpeedStart = 0;
for(ulong i = resume.NextBlock; i < blocks; i += blocksToRead)
{
@@ -330,10 +332,15 @@ namespace DiscImageChef.Core.Devices.Dumping
newTrim = true;
}
double newSpeed =
(double)blockSize * blocksToRead / 1048576 / (duration / 1000);
if(!double.IsInfinity(newSpeed)) currentSpeed = newSpeed;
resume.NextBlock = i + blocksToRead;
sectorSpeedStart += blocksToRead;
resume.NextBlock = i + blocksToRead;
double elapsed = (DateTime.UtcNow - timeSpeedStart).TotalSeconds;
if(elapsed < 1) continue;
currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed);
sectorSpeedStart = 0;
timeSpeedStart = DateTime.UtcNow;
}
end = DateTime.Now;