Проблемы производительности (Lua)?FAR API

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Проблемы производительности (Lua)?FAR API

Post by John Doe »

Latest post of the previous page:

При использовании диалоговых обработчиков есть проблема с производительностью в больших списках.
Например сейчас история папок у меня сейчас насчитывает 4746 элементов, и при простом перемещении курсора невооружённым глазом наблюдаю торможение.
Но это на старой машине, поэтому давайте измерим численно, вот таким скриптом, запускаемым из командной строки:

Code: Select all

lm:post local start=Far.UpTime; Keys"AltF12"; for i=1,100 do Keys"Up" end far.Message(Far.UpTime-start,"items:"..Object.ItemCount) Keys"F10"
Надо сравнить значения получаемые в 2х случаях
1) Пустая папка scripts
2) В папке единственный макрофайл, содержащий пустой диалоговый обработчик:

Code: Select all

Event{group="DialogEvent";action=function()end;}
У меня значения отличаются почти в 5 раз.

Что характерно, если добавить ещё несколько обработчиков (настоящих, не пустых), то это не повлияет на время исполнения.
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Проблемы производительности (Lua)?FAR API

Post by Shmuel »

John Doe wrote:При использовании диалоговых обработчиков есть проблема с производительностью в больших списках.
- Это явление мне известно, в планах - улучшить ситуацию.
- На относительно новых машинах (моей примерно 4 года, дешёвая модель) торможение не заметно.
- От количества элементов в списке торможение, связанное с диалоговыми обработчиками, мало зависит.
- На мантис.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Проблемы производительности (Lua)?FAR API

Post by John Doe »

Shmuel wrote:- От количества элементов в списке торможение, связанное с диалоговыми обработчиками, мало зависит.
В моём случае это важно.
Торможение пропорционально количеству элементов списка.

Code: Select all

lm:post local Items = {}; for i=1,100000 do Items[i]={text=i} end; far.Menu({},Items)
Update:
0002644: Наличие диалоговых обработчиков может вызывать видимое торможение
Shmuel
Posts: 6840
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 530 times

Re: Проблемы производительности (Lua)?FAR API

Post by Shmuel »

John Doe wrote:В моём случае это важно.
Торможение пропорционально количеству элементов списка.
Это сейчас непринципиально (и нет времени обсуждать). Если хотите повысить шансы на улучшение, помещайте на мантис.
Post Reply

Return to “Обсуждение макросов”