我目前正在测试将文本数据记录到文件中的不同方法的性能。似乎当我打开/写入/关闭很多次时,使用的扩展会影响性能。 (.txt和.log快〜7倍)
使用的代码:
private static void TestWriteSpeed(FileInfo file)
{
Stopwatch watch = new Stopwatch();
watch.Start();
for (int i = 0; i < 5000; i++)
{
using (StreamWriter writer = file.AppendText())
{
writer.Write("This is a test");
}
}
Console.WriteLine(file.Name + ": " + watch.Elapsed);
}
static void Main(string[] args)
{
TestWriteSpeed(new FileInfo("abc.txt"));
TestWriteSpeed(new FileInfo("abc.txt.01564611564"));
TestWriteSpeed(new FileInfo("abc.01564611564.txt"));
TestWriteSpeed(new FileInfo("abc.xml"));
TestWriteSpeed(new FileInfo("abc.xml.01564611564"));
TestWriteSpeed(new FileInfo("abc.config"));
TestWriteSpeed(new FileInfo("abc.config.01564611564"));
TestWriteSpeed(new FileInfo("abc.exe"));
TestWriteSpeed(new FileInfo("abc.exe.01564611564"));
TestWriteSpeed(new FileInfo("abc.log"));
TestWriteSpeed(new FileInfo("abc.log.01564611564"));
Console.ReadLine();
}
结果:
abc.txt 00:00:08.3826847 <---
abc.txt.01564611564 00:00:59.7401633
abc.01564611564.txt 00:00:08.0069698 <---
abc.xml 00:00:58.2031820
abc.xml.01564611564 00:00:59.3956204
abc.config 00:00:58.4861308
abc.config.01564611564 00:01:01.2474287
abc.exe: 00:01:00.0924401
abc.exe.01564611564 00:01:00.7371805
abc.log 00:00:08.0009934 <---
abc.log.01564611564 00:00:59.8029448
为什么会这样?
答案 0 :(得分:15)
看起来其他应用程序或进程正在读取或监视正在写入的文件,并出于性能原因忽略.txt或.log文件。
为什么?因为在我的笔记本电脑上运行时,你的一堆代码会为所有文件(22秒)提供相同的结果,而不会有任何变化。
答案 1 :(得分:6)
我在我的工作机器上测试了这个;安装了Symantec Endpoint Protection AV的32位Windows XP的Core 2计算机。这些是我的结果:
abc.txt: 00:00:07.1192029
abc.txt.01564611564: 00:00:06.9956377
abc.01564611564.txt: 00:00:06.9534773
abc.xml: 00:00:06.9368894
abc.xml.01564611564: 00:00:07.9326258
abc.config: 00:00:07.9074675
abc.config.01564611564: 00:00:08.0205423
abc.exe: 00:00:21.2559372
abc.exe.01564611564: 00:00:07.2417322
abc.log: 00:00:07.0871043
abc.log.01564611564: 00:00:07.1848522
在我的情况下,只有.exe扩展名需要更长的时间。
所以是的,据猜测,反病毒正在干扰写入速度。
编辑:我应该注意,此用户是AD域中的受限用户。
答案 2 :(得分:5)
正如Orsol所说,您的AV可能会忽略txt和日志文件。