Для раскраски фалов маску можно задать как перечисление через запятую (*.avi,*.mov,*.mpg) или как регулярное выражение (/\.(avi|mov|mpg)$/i).
Какой из вариантов предпочтительней в плане быстродействия?
Маска файлов: через запятую vs регэксп
- HaRT
- Moderator
- Posts: 10866
- Joined: Tue 30 Aug, 2005 17:21
- Has thanked: 221 times
- Been thanked: 358 times
Re: Маска файлов: через запятую vs регэксп
Я убеждён, что получение списка имён для отображения на панели занимает куда большее время, чем сопоставление их с масками раскрасок. Или у Вас тысячи групп раскраски? (На сотнях тормоза были устранены ещё во времена Атрибуции 1.) Или у Вас маски на много кибибайт?
Фар есть инструмент, а не нянька. © 2009 DrKnS
- John Doe
- Бюрократ
- Posts: 13861
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Маска файлов: через запятую vs регэксп
Я убеждён, что сложная раскраска способна заметно тормозить (не на сотнях, но на тысячах, десятках тысяч).
Однако да, вряд ли это зависит от того, каким из способов заданы маски.
Однако да, вряд ли это зависит от того, каким из способов заданы маски.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Маска файлов: через запятую vs регэксп
Почему собственно? Поиск с regexp'ами на порядок тормознее чем без. Так что, я бы ими не злоупотреблял.
Но, конечно, практика - критерий истины, нужно сделать эксперимент.
Но, конечно, практика - критерий истины, нужно сделать эксперимент.
- John Doe
- Бюрократ
- Posts: 13861
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Маска файлов: через запятую vs регэксп
Небольшой эксперимент:
Всё конечно зависит от масок, но видно что регэкспы могут быть и быстрее.
P.S.
При желании легко добавить в скрипт свой набор масок.
Code: Select all
1│ *.avi,*.mov,*.mpg :0.527
2│ /\.(avi|mov|mpg)$/i :0.577
3│ *.rar,*.r[0-9][0-9] :0.865
4│ /\.(rar|r\d\d)$/i :0.537
5│ *.rar,*.r[0-1][0-9] :0.902
6│ /\.(r[a01][r0-9])$/i:0.528
P.S.
При желании легко добавить в скрипт свой набор масок.
-
- Posts: 6840
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Маска файлов: через запятую vs регэксп
При использовании фаровских регулярных выражений в цикле полезно сначала скомпилировать выражение, а в цикле использовать его уже в скомпилированной форме. Это может значительно увеличить быстродействие.
- John Doe
- Бюрократ
- Posts: 13861
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 74 times
- Been thanked: 428 times
- Contact:
Re: Маска файлов: через запятую vs регэксп
Спасибо за дельный совет, но похоже здесь он неприменим.
bad argument #2 to 'f' (string expected, got userdata)
Это и понятно:
Result = far.ProcessName (Op, Mask, Name, Flags, Size)
Mask: string
bad argument #2 to 'f' (string expected, got userdata)
Это и понятно:
Result = far.ProcessName (Op, Mask, Name, Flags, Size)
Mask: string
Re: Маска файлов: через запятую vs регэксп
при более длинном списке масок регэксп рулитJohn Doe wrote:Небольшой эксперимент:Всё конечно зависит от масок, но видно что регэкспы могут быть и быстрее.Code: Select all
1│ *.avi,*.mov,*.mpg :0.527 2│ /\.(avi|mov|mpg)$/i :0.577 3│ *.rar,*.r[0-9][0-9] :0.865 4│ /\.(rar|r\d\d)$/i :0.537 5│ *.rar,*.r[0-1][0-9] :0.902 6│ /\.(r[a01][r0-9])$/i:0.528
Code: Select all
1│ 1.768 :*.avi,*.mov,*.mpg,*.mpeg,*.wmv,*.mkv,*.asf,*.wav,...
2│ 0.546 :/\.(avi|mov|mpg|mpeg|wmv|mkv|asf|wav|ogg|asf|...