- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
输出速率怎么可能高于硬盘写入速率?
更新 1:我更改了以下内容:
关闭防病毒软件。没有变化。
插入新的物理磁盘并使用第一个分区为了测试。 (初始测试的磁盘位于最后一个分区,与系统分区分开,但是在同一物理磁盘上。)。结果:有相同的循环模式,但系统不再测试期间无响应。写入速度为稍高一些(可能是由于使用第一个分区和/或不再干扰系统分割)。初步结论:存在某种系统分区的干扰。
已安装 64 位 Perl。循环消失了一切在 2 秒时间范围内都很稳定:CPU 利用率为 55%单核,写入速度约65MB/s。
在原始驱动器上尝试过 64 位 Perl。结果:中间某个地方。 8 秒周期,CPU 20-50%,35 - 65 MB/秒(而不是 0-100% 的深度循环,0 -120 MB/秒)。系统只是轻微无响应。写入速度为 50 MB/秒。这支持了干扰理论。
在 Perl 脚本中刷新。还没试过。
好的,我已经通过了 first hurdle 。我写了一个Perl可以生成非常大的文本文件(例如 20 GB)的脚本本质上只是一些:
print NUMBERS_OUTFILE $line;
其中 $line 是一个长字符串,末尾带有“\n”。
当 Perl 脚本启动时,写入速率约为 120 MB/s(与脚本计算的内容一致, Process Explorer和进程 Perl 的“IO 写入字节/秒”在性能监视器中。)并且单核上的 CPU 为 100%正在运行。我相信这个速度比 write 还要高硬盘速度。
一段时间后(例如 20 秒,写入 2.7 GB)整个系统变得非常无响应,CPU 下降到0%。这最后例如30秒。平均写入速度这两个阶段的写入速度是一致的硬盘。本文提到的时间和尺寸每次运行的段落差异很大。范围 1 GB到目前为止,第一阶段已观测到 4.3 GB。这是transcript for the run with 4.3 GB .
9.2 GB 文本文件有多个这样的循环测试中生成:
这是怎么回事?
<小时/>完整Perl script和 BAT driver script (HTML 格式为预标记)。如果两个环境变量 MBSIZE 和OUTFILE 已设置,然后 Perl 脚本应该能够运行在 Windows 以外的其他平台上保持不变。
平台:ActiveState 的 Perl 5.10.0; (最初是32位,后来是64位); build 1004。 Windows XP x64 SP2,无页面文件,8 GB RAM,AMD 四核 CPU, 500 GB Green Caviar 硬盘(写入速度 85 MB/秒?)。
最佳答案
我和其他人一样认为问题是缓冲区填充然后清空。尝试打开autoflush避免有缓冲区(在 Perl 中):
#!/usr/bin/perl
use strict;
use warnings;
use IO::Handle;
my $filename = "output.txt";
open my $numbers_outfile, ">", $filename
or die "could not open $filename: $!";
$numbers_outfile->autoflush(1);
#each time through the loop should be 1 gig
for (1 .. 20) {
#each time though the loop should be 1 meg
for (1 .. 1024) {
#print 1 meg of Zs
print {$numbers_outfile} "Z" x (1024*1024)
}
}
如果您要打印一点、做一些工作等,缓冲区可能会很好。但如果您只是要将数据写入磁盘,它们可能会导致奇怪的行为。您可能还需要禁用文件系统正在执行的任何写入缓存。
关于performance - Perl:写入速度之谜?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1391015/
我一直在使用高精度时间在控制台中记录我的程序事件。但很快我就注意到程序有时会显示四舍五入到毫秒的时间,有时则不会!它完全偶尔发生,它是相同的代码,未重新编译,未在运行之间编辑: using Syste
首先:该代码被认为是纯粹的乐趣,请在生产中不要做任何类似的事情。在任何环境下编译并执行这段代码后,对于您,您的公司或您的驯鹿造成的任何伤害,我们概不负责。以下代码不安全,不可移植,并且非常危险。被警告
我正在投影图像,然后检查它: 高度是20px。这是正确的。 然后我检查包含 img 的 data-radium 元素,令我惊讶的是: 尽管没有内容,该元素的高度“增长”了两个像素。此外,data-ra
我是一名优秀的程序员,十分优秀!