Страница 1 из 4

Производитеьность скриптов. Жаба против Напильника.

СообщениеДобавлено: 20 апр 2009, 13:38
fox
Все доброго времени суток.
Задавался ли кто-нибудь вопросом, тестил ли, есть ли разница в производительности скриптов написанных на разных языках? :-?

Re: Производитеьность скриптов

СообщениеДобавлено: 20 апр 2009, 14:00
Neodrop
Я провёл глубокое "сканирование" официального форума. Вывод - разницы в скорости нет, если соблюдены правила оптимального программирования. К примеру самоопределение типа переменных в JavaScript ощутимо влияет на скорость работы скрипта. Добавление директивы @pragma strict и прямое указание всех типов переменных, как постоянных, так и динамических, может ускорить скрипт иногда на 50%. :-B

Код: Выделить всё
@pragma strict
var obj : GameObject;

Re: Производитеьность скриптов

СообщениеДобавлено: 20 апр 2009, 14:09
fox
ясно, спасиба!

Re: Производитеьность скриптов

СообщениеДобавлено: 21 апр 2009, 20:13
wild_r
Вот прямо сейчас работает скрипт на JS с количестовм шагов порядка n^4, работает очень долго, n примерно равно 6000. Вернее он еще не закончил работать, будет примерно 30 минут уже. Правда работает на 1 ядре типа Core 2 Duo Yorkfiled, которое имеет частоту 4 ггц.

Насчет оптимизированности - нет лишних операций.

Re: Производитеьность скриптов

СообщениеДобавлено: 21 апр 2009, 21:38
Neodrop
Ничего не понял... К чему это? :-?

Re: Производитеьность скриптов

СообщениеДобавлено: 22 апр 2009, 08:42
wild_r
К тому, что лучше писать на C#.

Re: Производитеьность скриптов

СообщениеДобавлено: 22 апр 2009, 09:06
Neodrop
Это вывод, сделанный на основании того, что у вас кривоватые руки? :-? Я видел код. Немудрено, что при 36 000 000 итераций он будет жутко тормозить, учитывая полное отсутствие оптимизации кода.

Re: Производитеьность скриптов

СообщениеДобавлено: 22 апр 2009, 09:35
wild_r
Ну ну, а вы своими "приямыми" руками сможете довести его работу до нормального срока? Поделитесь сакральными истинами.

Re: Производитеьность скриптов

СообщениеДобавлено: 22 апр 2009, 12:11
Neodrop
Я уже делился и даже, кажется в этой теме. Помимо того и в прочих топиках.
Запостите тут код, я его ради урока поправлю. Сравним выигрыш в производительности. Только сперва замерьте свой вариант. :-B

Re: Производитеьность скриптов

СообщениеДобавлено: 22 май 2009, 23:57
wild_r
О, пропустил пост. Если предложение еще работает, то вот код:

Собственно он делает то, что должен был делать ваш Визард... Но без графических рюшечек. И из сцены придется удалить на время все, кроме интересующих нас объектов геометрии.
Код: Выделить всё
@script ExecuteInEditMode()

function Start() {
   var objs = new Array();
       var hash = new Array();
   var i : Number;

        objs = FindObjectsOfType(GameObject);

   for(i=0; i<objs.length;i++){
      hash[i]=1;
        }

        for(i=0; i<objs.length; i++) {
      if(hash[i]==1){
         for (k=j; k<objs.length; k++) {
            if((hash[k]==1)&&(objs[k].renderer.sharedMaterial.GetTexture("_MainTex").name == objs[i].renderer.sharedMaterial.GetTexture("_MainTex").name)){
               objs[k].renderer.sharedMaterial = objs[i].renderer.sharedMaterial;
               hash[k]=0;
            }   
         }
      }
   }


Ууу, Tab не работает в коде, немного кривое форматирование.

Re: Производитеьность скриптов

СообщениеДобавлено: 23 май 2009, 08:51
Neodrop
Вот ради эксперимента ваш же вариант, но в причёсаном виде. Мне интересно, какая будет разница в скорости исполнения :-?

Код: Выделить всё
@script ExecuteInEditMode()
#pragma strict

function Start() {
   var objs = new Array();
       var hash = new Array();
   var i : Number;

        objs = FindObjectsOfType(GameObject);

var count = objs.length;
   for(i=0; i<count; i++){
      hash[i]=1;
        }

        for(i=0; i<count; i++) {
      if(hash[i]==1){
         for (k=j; k<count; k++) {
            if((hash[k]==1)&&(objs[k].renderer.sharedMaterial.GetTexture("_MainTex").name == objs[i].renderer.sharedMaterial.GetTexture("_MainTex").name)){
               objs[k].renderer.sharedMaterial = objs[i].renderer.sharedMaterial;
               hash[k]=0;
            }   
         }
      }
   }

Re: Производитеьность скриптов

СообщениеДобавлено: 23 май 2009, 12:06
wild_r
Смогу померить только в понедельник утром... Ждите.

Re: Производитеьность скриптов

СообщениеДобавлено: 23 май 2009, 12:25
PHPDog2009
Neodrop писал(а):Мне интересно, какая будет разница в скорости исполнения :-?

вдруг жаба победит?.. тогда будет зер ГУЦТ.. всё-таки, я думаю... юнитековцы не зря выбрали её как пример всем скриптам... но.. скорее всего это из-за её простоты... Но честно говоря, я думаю что верх одержит шарп.. чтоб его...

Re: Производитеьность скриптов

СообщениеДобавлено: 23 май 2009, 13:17
Neodrop
Нет. Я думаю они во многом равны.
Но Жаба - отвратительный и неправильный выбор для любого большого проекта.
Я переписываю сейчас все свои на Шарп. Не повторяйте моих ошибок из тупого упрямства или по-незнанию. :-?

Re: Производитеьность скриптов

СообщениеДобавлено: 23 май 2009, 14:08
wild_r
Раз - это не совсем Жаба.
Два - пока только недодемка для спонсора...
Три - если будет Про, будет и Си.