Dev*_*vin 5 c# wpf performance file-io exception-handling
(我搜索了类似的线程,找不到任何解决这个特定问题的东西,尽管有几个相似的例如这里和这里.)
我正在评估我们的应用程序的性能,我注意到我们正在获得一些IOExceptions"找不到资源".我不确定它发生了多少次(很大程度上取决于用户如何使用该应用程序),但它至少有十几个左右.
我假设异常通常是性能昂贵,文件I/O调用也是如此File.Exists().我知道在尝试加载文件之前检查文件是否存在总是很好的做法.我的问题是,如果我检查这个特定文件是否存在,我会看到多少性能提升?(再次,忽略"你应该这样做",我只是想了解性能).
选项1:
try
{
return (ResourceDictionary) Application.LoadComponent(uri);
}
catch (Exception)
{
//If it's not there, don't do anything
}
Run Code Online (Sandbox Code Playgroud)
这不会产生额外的IO调用,但有时会抛出并吞噬异常.
选项2:
if(File.Exists(uri))
{
return (ResourceDictionary) Application.LoadComponent(uri);
}
Run Code Online (Sandbox Code Playgroud)
通常,如果文件应该存在(即:它是应用程序部署的一部分),那么我将使用异常检查,而不是其他任何东西.这是因为,在这种情况下,例外确实是一种特殊和意想不到的情况.
如果文件是用户输入的内容,则检查存在是否具有潜在意义.但是,这仍然不能消除异常处理的需要,因为可以在检查时间和打开/使用它之间删除文件.因此,您仍然需要异常处理 - 在这种情况下,您可能仍然只想使用第一个选项代码,但要确保异常处理足够干净以始终提供行为,即使文件不存在.
| 归档时间: |
|
| 查看次数: |
1804 次 |
| 最近记录: |