-
Notifications
You must be signed in to change notification settings - Fork 173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
slow colorer background parsing #12
Comments
хм а тормозить не начинает ниче? я конечно понимаю что видимо этот код писался гденить в районе 2010го.. но требовать для работы минимум i5 не хотелось бы.. |
Да, я тоже об этом подумал, правильно будет точно загрузить одно ядро. Иначе слишком мощный проц будет простаивать, увеличивая время ожидания, а слишком медленный приведет к большим залипам при нажатии клавиш. |
хмхмхм.. это уже интереснее, я думал оно и в винде так же было, а хочется чтоб было лучше) |
Ну там 100\итерация это максиум, а это мало как что ни рассчитывай. Sleep то там нет, а частота итераций снизилась, это основная проблема со старым лимитом. |
полагаю у этого кода уши растут из генерируемого far'ом KEY_IDLE, а в фаре слипов полно, |
Да, меньше 10мс не получится, если только там нет алгоритма компенсации вроде 1 раз 10мс, второй раз 0мс -> 5ms. В любом случае так мало спать и часто переключать контексты вредно, то то виндовый far2 под wine жрет проц ощутимо. |
ну да, но по любому гдето тут еще мой баг зарыт, раз появилась такая разница с частотой idle ивентов |
Вощем... Проверил у себя - действительно, ProcessEditorInputW с KEY_IDLE под виндой фаром дергается на глазок в 10 раз чаще чем в линуксовом порте. Стал копать.. иии. Вкратце - это подводный граблебаг FAR'а:) |
а пулреквест делайте да как ща.. 10 мсек на 1мсек я заменять не буду - некрасиво это спать по 1й мсек.. Тем более что под виндой у фара (причем и у 3го) тут тоже полная неоднозначность.. А потом если будет время и желание - можно будет сделать адаптивную логику |
Чтобы сделать пул реквест, мне надо снова отменить подключение netbox и кореженье WinPort, гитхаб как оказалось не поддерживает cherry-pick) я собственно потому и сделал issue со ссылкой на коммит, я не сразу пул реквест. |
ну я думаю это не к спеху.. |
По идее -Wl,--version-script=exports.def сделает так что из so гарантированно будут торчать только символы из .def, даже без -fvisibility=hidden
Из so тогда будут торчать только JNI_* и Java_* |
не, я про то что если в FAR будет загружена .so-шка не нами скомпиленная.. а так, из системы чтото. И если она будет экспортировать, скажем, CloseHandle и будет еще какаято другая левая .so, которая будет линковаться на этот CloseHandle. Так вот, загрузившись в far2l, который будет так же экспортировать CloseHandle - та вторая будет юзать CloseHandle из far2l. Так уж в линуксе лоадер работает, это в винде (и OSX с ее mach-o) точно указано из какой длл должен прилинковаться каждый конкретный символ.. |
А netbox не будет линковаться с CloseHandle, он у него будет внутри статически слинкован и наружу не торчать. И far2l не нужно CloseHandle экспортировать. Так что пока экземпляры WinPort полностью независимы и не экспортируются все должно быть ок. Главное не передать handle из far2l в плагин и не сделать на нем CloseHandle() в плагине (между копиями WinPort). |
Так вот это вот неправильно. Во-первых каждому бинарнику таскать с собой общий код - не комильфо. Во-вторых проблемы не только с хэндлами. Первое на чем вылезут грабли - консольные API не будут работать в плагинах (а они их юзают частенько напрямую), потому что инстанс консоли только один - у фара. Плагин может конечно тогда инициализировать свою консоль - тогда вылезет еще одно окошко, с его личной консолью :) |
Ну да, потому netbox еще далеко не готов, надо переводить часть winapi на те функции что far2l передает в таблице функций, другую часть на нативный linux, и оставшееся на то, чем можно пользоваться из плагинов, проблем с путаньем линковки между so вроде на данном этапе нет. |
Вощем мы посовещались и я решил :) |
И по поводу сабжа - тоже вкомитил фикс почти как ваш только ограничение time 1000, а не 10000. Соображения такие - раз замедлилось в 10 раз, то и лимит нужно поднять примерно так же. |
возвращаясь к нетбоксу - попробовал собрать и обнаружил пару проблем, возможно вы не заметили: хедеры в PluginSDK были не очень совместимые с тем что в far2l + по мелочи - добавил копирование .lng И проверку чтоб не падало в одном месте) теперь оно у меня тоже собралось и даже меню появилось.. но при попытке добавить сервер упало( |
завел issue для "всего": #14 |
Да, этот лимит тоже норм, на nuklear.h у меня 7 секунд. |
При редактировании больших файлов вроде https://github.com/vurtun/nuklear/blob/master/nuklear.h , если сразу спозиционироваться в конец, можно ждать парсинга colorer вечно.
Предлагаю такое решение: lieff@b712007
Это быстро увеличивает объем парсинга до 10000 строк\итерацию. Время ожидания на nuklear.h сокращается до ~5 секунд. Если во время не завершенного процесса сдвинуть курсор, можно заметить залипание, но оно не большое.
The text was updated successfully, but these errors were encountered: