使用 perl 脚本来填充硬盘驱动器 - 这可以更有效地完成吗?
Using perl script to fill up hard drive - can this be done more efficiently?
我写了一个 Perl 脚本 (Strawberry) 来用一些半随机数填充一些旧硬盘驱动器几次,然后再将它们发送到回收站。
该脚本创建一个 ~ 100mb 的文件,其中包含随机的 0 和 1,然后将其写入文件 10 次。
然后根据硬盘大小重复此过程(在示例中仅 3 次用于测试目的)。
目前,每个文件大约需要 36 秒。
我的问题是:我可以对脚本进行哪些更改以加快速度?
这是完整的脚本:
my $master = "c:/programme/tools/filluphd/master.txt";
my $rd;
my $log = "c:/programme/tools/filluphd/log.log";
my $file = "f:/file_";
#create master
open (MASTER, ">", $master);
for ($i = 0; $i < 100000000; $i++)
{
$rd = int(rand(2));
print MASTER $rd;
}
close (MASTER);
open (LOG, ">", $log);
print LOG "start: ".localtime()."\n";
my $start_time = time();
my $random;
open (MASTER, "<", $master) or die "cannot open master: $!"."\n";
while (<MASTER>)
{
$random .= $_;
}
close (MASTER);
for ($n = 0; $n <= 2 ; $n++)
{
my $file_start = time();
my $filename = $file.$n.".txt";
my $i = 0;
open (FILE, ">", $filename);
for ($i; $i <= 10; $i++)
{
print FILE $random;
}
close (FILE);
my $file_end = time();
my $file_runtime = $file_end - $file_start;
print LOG "file ".$filename." took ".$file_runtime." seconds!"."\n";
}
my $end_time = time();
my $run_time = $end_time - $start_time;
print LOG "run time: ".$run_time." seconds"."\n";
print LOG "finish: ".localtime()."\n";
close (LOG);
我做了一些测量,发现 HD 所在的机箱是 USB2-only。
这意味着它在大约 30MB/s 时完全饱和,windows 工具显示了这一点。
Speedwise,没什么可做的。
我写了一个 Perl 脚本 (Strawberry) 来用一些半随机数填充一些旧硬盘驱动器几次,然后再将它们发送到回收站。
该脚本创建一个 ~ 100mb 的文件,其中包含随机的 0 和 1,然后将其写入文件 10 次。
然后根据硬盘大小重复此过程(在示例中仅 3 次用于测试目的)。
目前,每个文件大约需要 36 秒。
我的问题是:我可以对脚本进行哪些更改以加快速度?
这是完整的脚本:
my $master = "c:/programme/tools/filluphd/master.txt";
my $rd;
my $log = "c:/programme/tools/filluphd/log.log";
my $file = "f:/file_";
#create master
open (MASTER, ">", $master);
for ($i = 0; $i < 100000000; $i++)
{
$rd = int(rand(2));
print MASTER $rd;
}
close (MASTER);
open (LOG, ">", $log);
print LOG "start: ".localtime()."\n";
my $start_time = time();
my $random;
open (MASTER, "<", $master) or die "cannot open master: $!"."\n";
while (<MASTER>)
{
$random .= $_;
}
close (MASTER);
for ($n = 0; $n <= 2 ; $n++)
{
my $file_start = time();
my $filename = $file.$n.".txt";
my $i = 0;
open (FILE, ">", $filename);
for ($i; $i <= 10; $i++)
{
print FILE $random;
}
close (FILE);
my $file_end = time();
my $file_runtime = $file_end - $file_start;
print LOG "file ".$filename." took ".$file_runtime." seconds!"."\n";
}
my $end_time = time();
my $run_time = $end_time - $start_time;
print LOG "run time: ".$run_time." seconds"."\n";
print LOG "finish: ".localtime()."\n";
close (LOG);
我做了一些测量,发现 HD 所在的机箱是 USB2-only。 这意味着它在大约 30MB/s 时完全饱和,windows 工具显示了这一点。 Speedwise,没什么可做的。