Wil*_*ill 38 .net c# optimization performance filesize
我知道获取文件大小的正常方法是使用FileInfo实例:
using System.IO;
class SizeGetter
{
public static long GetFileSize(string filename)
{
FileInfo fi = new FileInfo(filename);
return fi.Length;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法在不必使用静态方法创建FileInfo实例的情况下做同样的事情?
也许我想在每次我想要文件大小时创建一个新实例时过于吝啬,但是例如尝试计算包含5000多个文件的目录的总大小.尽管GC可能是最优化的,但是不应该有办法这样做而不必不必要地征税吗?
Dmi*_*try 17
别担心.首先,.NET中的分配很便宜.其次,该对象将在gen 0中,因此应该在没有太多开销的情况下收集它.
Hei*_*nzi 16
别担心.
我找到了一篇博客文章,其中有人测量了.NET中对象创建的开销(C#对象创建时间试验),结果表明,创建10,000个对象需要0.03秒,即每个对象3微秒.从文件系统读取文件长度所需的时间肯定会显着超过3微秒.
.NET框架中的许多静态方法在内部创建对象并调用它们的实例方法(您可以通过查看引用源或使用一些反射工具来验证这一点).您假设静态方法更快.不要做出这样的假设.如果您有两种方法可以做同样的事情,那么测量哪一种更快.