Как будет быстрее получить расширение файла?

Как будет быстрее:
string ext = System.IO.Path.GetExtension(FileName);

или
string ext=FileName.Substring(FileName.LastIndexOf('.'));

или
System.IO.FileInfo fi = new System.IO.FileInfo(FileName);
string ext = fi.Extension;

или
string[] temp= FileName.Split('.');
string ext =temp[temp.Length-1];

или
System.Text.RegularExpressions.Regex extend = new System.Text.RegularExpressions.Regex(@"(?:.*\.)(.*)");
string ext = extend.Match(FileName).Groups[1].Value;

=)
  • Вопрос задан
  • 6392 просмотра
Пригласить эксперта
Ответы на вопрос 5
@llirikkkk
у.в.е - условная временная еденица ХД

1 место (123 у.в.е):
string ext=FileName.Substring(FileName.LastIndexOf('.'));


2 место (315 у.в.е):
string ext = System.IO.Path.GetExtension(FileName);


3 место (519 у.в.е):
string[] temp= FileName.Split('.');
string ext =temp[temp.Length-1];


4 место (7254 у.в.е):
System.IO.FileInfo fi = new System.IO.FileInfo(FileName);
string ext = fi.Extension;


5 место (14341 у.в.е):
System.Text.RegularExpressions.Regex extend = new System.Text.RegularExpressions.Regex(@"(?:.*\.)(.*)");
string ext = extend.Match(FileName).Groups[1].Value;
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
string ext=FileName.Substring(FileName.LastIndexOf('.'));

string[] temp= FileName.Split('.');
string ext =temp[temp.Length-1];

System.Text.RegularExpressions.Regex extend = new System.Text.RegularExpressions.Regex(@"(?:.*\.)(.*)");
string ext = extend.Match(FileName).Groups[1].Value;

Не учитывают такого случая
some_path/fome_folder_with.dot/some_file_without_extention
или
some_path/.some_name_started_with_dot
Последние файлы нельзя создать в винде но можно использовать, многие кроссплатформенные программы грешат созданием подобных "инородных" путей.
Ответ написан
Комментировать
добавьте ещё вариант
Regex extend = new Regex(@"(?:.*\.)(.*)");
string ext = extend.Match(FileName).Groups[1].Value
Ответ написан
@gudus Автор вопроса
Протестил):

System.IO.Path.GetExtension: ext=.txt milSec=00:00:00.0000016

Substring: ext=.txt milSec=00:00:00.0000019

System.IO.FileInfo: ext=.txt milSec=00:00:00.0000445

Split: ext=txt milSec=00:00:00.0000009

System.Text.RegularExpressions.Regex: ext=txt milSec=00:00:00.0004294

=)
Ответ написан
Комментировать
lexxpavlov
@lexxpavlov
Программист, преподаватель
Вам для чего использовать? В смысле, как часто будет запускаться? Если редко, например, по щелчку мышкой, то вообще не важно, сколько времени займёт эта операция, и важнее будет понятность команды, с точки зрения дальнейшей поддержки. Поэтому лучше всего подойдёт Path.GetExtension().
А если у вас эта команда вызывается много раз в цикле, и её производительность на самом деле важна, только тогда стоит задумываться о том, каким способом получать данные.
Общее правило - пишите как можно более понятный и очевидный код, а где нужна производительность - только там нужно оптимизировать. Преждевременная оптимизация - зло, ибо отнимает кучу времени программиста.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы