Подтвердить что ты не робот

Есть ли способ получить размер файла в .NET с использованием статического метода?

Я знаю, что обычным способом получения размера файла было бы использование экземпляра FileInfo:

using System.IO;
class SizeGetter
{
  public static long GetFileSize(string filename)
  {
    FileInfo fi = new FileInfo(filename);
    return fi.Length;
  }
}

Есть ли способ сделать то же самое, не создавая экземпляр FileInfo, используя статический метод?

Возможно, я пытаюсь быть слишком скупым, создавая новый экземпляр каждый раз, когда хочу размер файла, но, например, попробую рассчитать общий размер каталога, содержащего 5000+ файлов. Как оптимизировано, как может быть GC, не должно быть способа сделать это без необходимости излишнего налогообложения?

4b9b3361

Ответ 1

Не беспокойтесь об этом. Во-первых, выделение в .NET дешево. Во-вторых, этот объект будет в гене 0, поэтому он должен быть собран без особых накладных расходов.

Ответ 2

Не беспокойтесь об этом.

  • Я нашел сообщение в блоге о ком-то, кто измерил накладные расходы на создание объектов в .NET(С# Object Creation Time Trials), и, как оказалось, создание 10 000 объектов заняло 0,03 секунды, т.е. 3 мкс на объект. Время, необходимое для чтения длины файла из файловой системы, несомненно, будет доминировать над этими 3 микросекундами.

  • Множество статических методов в среде .NET внутренне создает объекты и вызывает методы экземпляров экземпляров (вы можете проверить это, посмотрев на источник ссылки или используя инструмент отражения). Вы предполагаете, что статический метод выполняется быстрее. Не делайте таких предположений. Если у вас есть два способа сделать то же самое, измерьте, какой из них быстрее.