- Сообщения
- 738
- Реакции
- 21
Если у кого есть время, сравните пожалуйста скорость работы скриптика-теста (VBS/JS) по закрашиванию таблицы.
Я измерял на таблице 20х20 ячеек (Indi CS3). Если комп медленный, можно 10х10.
Для проверки: в любом документе текстовым курсором нарисуйте рамку.
Меню Table-Insert Table и указать размерность.
Вот текст скриптов:
VBS
JS
У меня JS работал 5 сек, VBS - 50 сек!!!
Но заметил такую вещь, если в момент работы скрипта Инди не виден (или даже просто окно отладчика перекрывает закрашиваемую таблицу), то скорость одинаковая (вроде бы).
Т.е. почему-то перерисовка экрана для VBS критична, а для JS нет.
Если не трудно, проверьте у себя и скажите, похожая ли картина.
И заодно вопрос. Можно ли как-то отключить перерисовку экрана на время работы скрипта?
У меня на строке MyInd.ScriptPreference.EnableRedraw = True (или False) пишет "метод не поддерживается".
Всем спасибо.
Я измерял на таблице 20х20 ячеек (Indi CS3). Если комп медленный, можно 10х10.
Для проверки: в любом документе текстовым курсором нарисуйте рамку.
Меню Table-Insert Table и указать размерность.
Вот текст скриптов:
VBS
Код:
'курсор в тело таблицы
myStartTime = Time()
MyTime1 = Time
Set MyInd = CreateObject("InDesign.Application.CS3")
Set myDoc = MyInd.ActiveDocument
Set myTable = MyInd.Selection.Item(1).Parent.Parent 'узнали таблицу по месту курсора вставки
CC = myTable.Cells.Count ''кол-во колонок
Tt = 100 / CC
For i = 1 To CC
myTable.Cells.Item(i).FillColor = "Red"
myTable.Cells.Item(i).FillTint = 100 - Tt * i
Next
MyTime2 = Time
'myt = " " & Format(MyTime2 - MyTime1, "ss") & " сек."
'''на этой строке ругается, поэтому время измерить удалось только по часикам с секундами в трее :((
Msg = "Готово!": Style = vbOKOnly: Title = myt
JS
Код:
// курсор в тело таблицы
var myStartTime = new Date();
var myDoc = app.activeDocument;
// some text is selected in the table
var myTable = app.selection[0].parent.parent;
var CC = myTable.cells.length;
var Tt = 100/CC
for ( i = 0; i < CC; i++ ) {
myTable.cells[i].fillColor = "Black";
myTable.cells[i].fillTint = 100 - Tt * i;
}
var myEndTime = new Date();
var myDuration = (myEndTime - myStartTime)/10000;
alert ("Duration - " + myDuration);
Но заметил такую вещь, если в момент работы скрипта Инди не виден (или даже просто окно отладчика перекрывает закрашиваемую таблицу), то скорость одинаковая (вроде бы).
Т.е. почему-то перерисовка экрана для VBS критична, а для JS нет.
Если не трудно, проверьте у себя и скажите, похожая ли картина.
И заодно вопрос. Можно ли как-то отключить перерисовку экрана на время работы скрипта?
У меня на строке MyInd.ScriptPreference.EnableRedraw = True (или False) пишет "метод не поддерживается".
Всем спасибо.