mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
[Dump] Use new speed calculation algorithm.
This commit is contained in:
@@ -78,6 +78,7 @@ partial class Dump
|
||||
|
||||
InitProgress?.Invoke();
|
||||
_speedStopwatch.Reset();
|
||||
double elapsed = 0;
|
||||
|
||||
for(ulong i = _resume.NextBlock; i < blocks; i += blocksToRead)
|
||||
{
|
||||
@@ -102,9 +103,10 @@ partial class Dump
|
||||
(long)i,
|
||||
(long)blocks);
|
||||
|
||||
_speedStopwatch.Start();
|
||||
sense = scsiReader.ReadBlocks(out buffer, i, blocksToRead, out double cmdDuration, out _, out _);
|
||||
totalDuration += cmdDuration;
|
||||
_speedStopwatch.Restart();
|
||||
sense = scsiReader.ReadBlocks(out buffer, i, blocksToRead, out _, out _, out _);
|
||||
elapsed += _speedStopwatch.Elapsed.TotalMilliseconds;
|
||||
totalDuration += _speedStopwatch.Elapsed.TotalMilliseconds;
|
||||
_speedStopwatch.Stop();
|
||||
|
||||
if(!sense && !_dev.Error)
|
||||
@@ -194,8 +196,7 @@ partial class Dump
|
||||
}
|
||||
}
|
||||
|
||||
mhddLog.Write(i, cmdDuration, blocksToRead);
|
||||
ibgLog.Write(i, currentSpeed * 1024);
|
||||
mhddLog.Write(i, _speedStopwatch.Elapsed.TotalMilliseconds, blocksToRead);
|
||||
_writeStopwatch.Restart();
|
||||
|
||||
outputFormat.WriteSectors(buffer,
|
||||
@@ -242,9 +243,12 @@ partial class Dump
|
||||
|
||||
for(ulong b = i; b < i + _skip; b++) _resume.BadBlocks.Add(b);
|
||||
|
||||
mhddLog.Write(i, cmdDuration < 500 ? 65535 : cmdDuration, _skip);
|
||||
mhddLog.Write(i,
|
||||
_speedStopwatch.Elapsed.TotalMilliseconds < 500
|
||||
? 65535
|
||||
: _speedStopwatch.Elapsed.TotalMilliseconds,
|
||||
_skip);
|
||||
|
||||
ibgLog.Write(i, 0);
|
||||
AaruLogging.WriteLine(Localization.Core.Skipping_0_blocks_from_errored_block_1, _skip, i);
|
||||
i += _skip - blocksToRead;
|
||||
newTrim = true;
|
||||
@@ -254,12 +258,12 @@ partial class Dump
|
||||
sectorSpeedStart += blocksToRead;
|
||||
_resume.NextBlock = i + blocksToRead;
|
||||
|
||||
double elapsed = _speedStopwatch.Elapsed.TotalSeconds;
|
||||
if(elapsed < 100) continue;
|
||||
|
||||
if(elapsed <= 0 || sectorSpeedStart * blockSize < 524288) continue;
|
||||
|
||||
currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed);
|
||||
currentSpeed = sectorSpeedStart * blockSize / (1048576 * elapsed / 1000);
|
||||
ibgLog.Write(i, currentSpeed * 1024);
|
||||
sectorSpeedStart = 0;
|
||||
elapsed = 0;
|
||||
_speedStopwatch.Reset();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user