[ID CS4-CS6] Скорость js в Indesign

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Давно замечал что скорость в Indesign работы скриптом.. ну мягко говоря - "ПОЛНЕЙШИЕ ТОРМОЗА"

И вот решил провести простой тест - чистая работа js без обращения к DOM (Object Model)
Код:
with (app) {
var start = new Date();
var text  = "5\t22\r7\t22\r8\t22\r9\t22\r11\t8\r21\t22\r39\t22\r43\t108\r56\t22\r62\t22\r79\t22\r80\t36\r91\t336\r94\t22\r99\t22\r101\t122\r102\t179\r103\t236\r104\t136\r105\t93\r106\t108\r107\t165\r108\t179\r109\t179\r110\t236\r111\t165\r112\t108\r113\t122\r114\t122\r115\t165\r116\t150\r118\t165\r119\t122\r120\t93\r121\t136\r122\t136\r123\t93\r124\t65\r125\t165\r126\t136\r127\t136\r128\t208\r129\t108\r130\t265\r131\t165\r132\t165\r133\t122\r134\t193\r136\t79\r137\t165\r138\t208\r139\t108\r140\t136\r141\t108\r142\t122\r143\t108\r144\t208\r145\t136\r146\t150\r147\t108\r148\t65\r149\t122\r150\t108\r151\t8\r164\t22\r174\t22\r175\t22\r182\t8\r185\t22\r189\t22\r191\t22\r196\t22\r197\t22\r198\t93\r5\t22\r7\t22\r8\t22\r9\t22\r11\t8\r21\t22\r39\t22\r43\t108\r56\t22\r62\t22\r79\t22\r80\t36\r91\t336\r94\t22\r99\t22\r101\t122\r102\t179\r103\t236\r104\t136\r105\t93\r106\t108\r107\t165\r108\t179\r109\t179\r110\t236\r111\t165\r112\t108\r113\t122\r114\t122\r115\t165\r116\t150\r118\t165\r119\t122\r120\t93\r121\t136\r122\t136\r123\t93\r124\t65\r125\t165\r126\t136\r127\t136\r128\t208\r129\t108\r130\t265\r131\t165\r132\t165\r133\t122\r134\t193\r136\t79\r137\t165\r138\t208\r139\t108\r140\t136\r141\t108\r142\t122\r143\t108\r144\t208\r145\t136\r146\t150\r147\t108\r148\t65\r149\t122\r150\t108\r151\t8\r164\t22\r174\t22\r175\t22\r182\t8\r185\t22\r189\t22\r191\t22\r196\t22\r197\t22\r198\t93"
var arrall = text.split(/\r/g);
for(i=0; i<arrall.length; i++){
    arrall[i] = arrall[i].split(/\t/g);
     
    }

var a_string = "";
var a_final = [];
var a_globalcount = 1;

for (i=0; i<arrall.length; i++){
            for(ii=0; ii<parseInt(arrall[i][1]); ii++){
                a_globalcount = a_globalcount + 1;
               
                a_string = a_string + '' + arrall[i][0] + ',';
               
               
                if (a_globalcount >2000){
                   
                    a_final.push(a_string.slice(0,-1));
                    a_string = "";
                    a_globalcount = 1;
                   
                    }
           
        }
    }

a_final.push(a_string.slice(0,-1))

var a_new_str = "";
for (i=0; i<a_final.length; i++){
    a_new_str = a_new_str + "" +  a_final[i] + "\r";
   
    }



var  atetx2  = a_new_str;
var atime = new Date() - start;
var zzzzasas = 0;
alert (""+ atime);

}

Результат:
Indesign - 4573 ms
Chrome (убрать with (app) {})- 5 ms
Firefox (тоже тормозх ')))') - 24 ms

в разных вариациях - в среднем в 1000 раз медленнее..ну это же не в какие ворота.. Adobe - окстись... и купи у Google движек V8!

Под рукой нет свежего типа СС2017 indesign - там ничего не поменялось?

P.S. Попробовал в СС2017 - те же 4,5 секунды :(
 
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Adobe - окстись... и купи у Google движек V8!
Это абсолютно несравнимые вещи
В первую очередь тем, что адобовский яваскрипт заточен не под скорость в браузере а под оперирование собственными объектами, соответственно его массивы и строки - это совсем не то что под массивами и строками в браузерах понимается.
 

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
... соответственно его массивы и строки - это совсем не то что под массивами и строками в браузерах понимается
Честно говоря я думал - что это "обычный" js интерпретатор (js-движек) - который только в случае обращения к аналогу DOM (непосредственно к объектам Indesign) через какой-то интерфейс начинает тормозить...
...что адобовский яваскрипт заточен не под скорость
- а вот это плохо!
 

andrejK

R.I.P.
Сообщения
10 300
Реакции
5 218
напишите в спортлото!
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Честно говоря я думал - что это "обычный" js интерпретатор (js-движек) - который только в случае обращения к аналогу DOM (непосредственно к объектам Indesign) через какой-то интерфейс начинает тормозить...
Разумеется, нет. Достаточно глянуть в какой бинарный код адоба все это чудо компилирует
 

Oleg Butrin

20 лет на форуме
Сообщения
1 989
Реакции
1 213
А если в коде убрать непонятно зачем нужную конструкцию with (app) {}, то время выполнения сократится до 40-45 миллисекунд. И те тратятся в основном на собственно запуск скрипта.
 
  • Спасибо
Реакции: bossrus, Flame и _MBK_

Vadim_PDF

Топикстартер
15 лет на форуме
Сообщения
1 648
Реакции
237
Семен Семенович! © - это все, что я могу сказать про себя!