File.Exists()的原理和效率问题

RubbyZK 2010-07-07 05:47:32
小弟写了一个测试程序来测试File.Exists(),开数据库连接和读取xml文件之间的效率问题。
小弟不清楚File.Exists()执行原理,是否有使用到文件流,如果大量使用File.Exists(),可能要使用上百万次,是否会对应用程序的性能有大的影响。我也知道FileSystemWatcher可以监视文件,但是用起来不是很顺手,所以在探索其他方式。
请大虾们不吝赐教,谢谢!

class Program
{
static void Main(string[] args)
{
int cout = 0;
DateTime dtStart=DateTime.Now;
string Path = "C:\\FundNotify.xml";
string fileName = "C:\\Documents and Settings\\qzhou\\Desktop\\CASIdFilter\\File\\NewIdNotifyFile\\FundNotify.xml";
string connStr = "Data Source=szcnawsdb02;Integrated Security=True";
while (DateTime.Now <= dtStart.AddSeconds(1))
{
bool b=File.Exists(Path);
//OpenXmlFile(fileName);
//OpenSqlConn(connStr);
cout++;
}
Console.WriteLine(cout);
Console.Read();
}

private static void OpenXmlFile(string fileName)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fileName);
}

private static void OpenSqlConn(string connStr)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
}
}
}
...全文
1955 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
RubbyZK 2010-07-09
  • 打赏
  • 举报
回复
谢谢各位,结贴给分!
guyehanxinlei 2010-07-08
  • 打赏
  • 举报
回复
了解一下!
wuyq11 2010-07-07
  • 打赏
  • 举报
回复
File类的静态方法对所有方法都执行安全检查。
如果打算多次重用某个对象改用 FileInfo
缓存可更新
RubbyZK 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyq11 的回复:]
数据库操作主要是什么操作
XML文件也是可以缓存的
[/Quote]

这些我明白,如果是要实时取变化了的东东,例如XML文件中某个节点的值,缓存就误事了。
wuyq11 2010-07-07
  • 打赏
  • 举报
回复
数据库操作主要是什么操作
XML文件也是可以缓存的
RubbyZK 2010-07-07
  • 打赏
  • 举报
回复
MSDN上对FileInfo.Exists的说明


首次调用时,FileInfo 将调用 Refresh 并缓存文件的相关信息。以后调用时,必须调用 Refresh 以获取信息的最新副本。

在FileInfo.Exists之前加上Refresh 后,1秒钟执行的次数是7600左右,骤降(没加之前是300多万次)

RubbyZK 2010-07-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 moonwrite 的回复:]
File 一次操作
FileInfo 多次操作
[/Quote]

兄台,谢谢你的回复,很受益,那么File.Exists和FileInfo.Exists具体有没有使用到文件流,有没有大量读磁盘
moonwrite 2010-07-07
  • 打赏
  • 举报
回复
File 一次操作
FileInfo 多次操作
RubbyZK 2010-07-07
  • 打赏
  • 举报
回复
自己顶一下
RubbyZK 2010-07-07
  • 打赏
  • 举报
回复
测试结果补充下,1秒时间内,File.Exists()的执行次数是 60000 次左右
开数据库连接 16000 次左右
读取XML文件 5000 次左右

17,747

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧