Comments (7)
Регэкспы долго парсятся, когда открываешь директорию с 100500 (в буквальном смысле) файлов это будет ботлнек, хотя опционально можно конечно
С регистронезависимым сравнением вопрос открыт, опция будет, когда нибудь...
from far2l.
Регэкспы долго парсятся, когда открываешь директорию с 100500 (в буквальном смысле) файлов это будет ботлнек, хотя опционально можно конечно С регистронезависимым сравнением вопрос открыт, опция будет, когда нибудь...
Не поленился, набросал генератор рандомных имён файлов с заданными расширениями и провёл замеры.
У меня результаты получились такие.
-
1 млн. файлов в директории, имена рандомные [A-Za-z0-9\s]{1,20}, расширения из текущего списка подсветки, половина в верхнем, половина в нижнем регистре.
Среднее время от входа в директорию до отображения содержимого при использовании классических масок 10.28 сек, при использовании регэкспов 10.59 сек. +3% -
1 млн. файлов в директории, имена рандомные [A-Za-z0-9\s], расширения из текущего списка подсветки, половина в верхнем, половина в нижнем регистре, общая длина имени файла от 1 до 255 символов.
Среднее время от входа в директорию до отображения содержимого при использовании классических масок 18 сек, при использовании регэкспов 21 сек. +18% -
1 млн. файлов в директории, имена рандомные [A-Za-z0-9\s], расширения из текущего списка подсветки, половина в верхнем, половина в нижнем регистре, общая длина имени файла 255 символов.
Среднее время от входа в директорию до отображения содержимого при использовании классических масок 23 сек, при использовании регэкспов 32 сек. +39%
В целом, не такая уж и большая плата за правильную раскраску, имхо.
Даже при самом неблагоприятном сценарии (255 символов каждое имя файла) падение скорости <40%.
А среднем по больнице получается около 18%.
from far2l.
Немного слабодвижущаяся тема про far2l на разных embedded (https://github.com/spvkgn/far2l-openwrt , https://github.com/spvkgn/far2l-termux и прочая экзотика). Так вот там regexps будет критично тормозить. Моё мнение - надо кодить галочку "регистронезависимое сравнение" и использовать по дефолту её.
from far2l.
В far2m маски файлов для раскраски являются case insensitive (в большинстве случаев это то что нужно).
Если у пользователя есть какие то особые файлы, где это не годится - поставит регексп.
from far2l.
Может, тогда малой кровью можно это решение перетащить из far2m?
from far2l.
АПДЕЙТ.
Не обратил внимания, что замеры проводил на debug-сборке far2l, перезамерил в тех же условиях на release-версии.
Ситуация в корне изменилась.
В 1 и 2 случае время при использовании масок и при использовании регэкспов стало примерно одинаковым, в рамках погрешности.
В 3 случае (1 млн. файлов с именами 255 символов) — процессинг масок стал даже дольше, чем регэкспов (10 секунд vs 8 секунд).
Такие дела.
from far2l.
Провёл ещё один тест.
Увеличил кол-во файлов в директории до: 1.5 млн.
Общая длина каждого имени файла, включая расширение: 255 символов.
Имена файлов: рандомные из набора символов [A-Za-z0-9\s] и [:punct:], за вычетом прямого слэша.
Проверялось на: расширениях, предлагаемых для раскраски по дефолту в текущей версии (и коммите) far2l.
После нескольких замеров среднее время от входа в директорию до отображения содержимого:
при использовании масок — 16 сек.,
при использовании регэкспов — 15 сек.
far2l собирался в release-версию.
from far2l.
Related Issues (20)
- far2l --tty key macros HOT 1
- Package for 10.15 not available in release for v2.6.1 HOT 2
- Unicode issues left — metabug
- Wayland issues left — metabug HOT 1
- F11 and combols doesn't work HOT 1
- 32-bit failed to build HOT 2
- New pick color features are not available in Options|Colors dialog HOT 1
- Pick color: highlighting with "Style" more than needed HOT 5
- Files highlighting masks: minor correction needed HOT 1
- Files highlighting marks symbols by default: remove or change with mc tradition HOT 12
- Wrong cask url in homebrew, please fix it. HOT 1
- Fix 'Align file extensions'
- "Test archive" command leads to /dev/null corruption if run with privilege elevation
- Consider switching (back?) to codecvt as an alternative to iconv and Wine charset routines HOT 4
- Suggestion to use `find_package()` over `pkg_search_module()` for better logs
- Crash in colorer(?) HOT 6
- Function Menu: BreakKeys problem
- Colorer failed to build on ARM HOT 1
- Black and white mode is no longer pure black and white
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from far2l.