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

Оптимизация кода.

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

Сообщение wild_r 29 май 2009, 19:11

Код: Выделить всё
Assets/Scripts/Searching.cs(5,18): warning CS0658: `identifier' is invalid attribute target. All attributes in this attribute section will be ignored


А потом ругается на последнюю скобку.
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

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

Сообщение Neodrop 29 май 2009, 19:12

Смотрите выше. Я поправил пост.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

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

Сообщение wild_r 29 май 2009, 19:27

Собственно результаты:

1) Тупо Java Script,

Код:
Скрытый текст:
Код: Выделить всё
@script ExecuteInEditMode()
var size = 6378;

function Start() {
   var objs = new Array(size);
   var i : Number;
   var j : Number;
   var k : Number;
   j =Time.realtimeSinceStartup;
   var hash = new Array(size);
   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=i; k<objs.length; k++) {
            var boo = objs[i];
            if((hash[k]==1)&&(objs[k].renderer.sharedMaterial.GetTexture("_MainTex").name == boo.renderer.sharedMaterial.GetTexture("_MainTex").name)){
               objs[k].renderer.sharedMaterial = boo.renderer.sharedMaterial;
               hash[k]=0;
            }   
         }
      }
   }
   
   Debug.Log(Time.realtimeSinceStartup - j);
}

Результаты:
Код: Выделить всё
6,9365119934082
7,43177509307861
7,27009582519531
7,15115356445312
7,13601303100586


2) Тупо Java Script с директивой "#pragma strict",

Код:
Скрытый текст:
Код: Выделить всё
#pragma strict
@script ExecuteInEditMode()
var size = 6378;

function Start() {
   var objs = new Array(size);
   var i : Number;
   var j : Number;
   var k : Number;
   j =Time.realtimeSinceStartup;
   var hash = new Array(size);
   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=i; k<objs.length; k++) {
            var boo = (objs[i] as GameObject);
            if((hash[k]==1)&&((objs[k] as GameObject).renderer.sharedMaterial.GetTexture("_MainTex").name == boo.renderer.sharedMaterial.GetTexture("_MainTex").name)){
               (objs[k] as GameObject).renderer.sharedMaterial = boo.renderer.sharedMaterial;
               hash[k]=0;
            }   
         }
      }
   }
   
   Debug.Log(Time.realtimeSinceStartup - j);
}

Результаты:
Код: Выделить всё
1,89500617980957
1,89636421203613
1,90605163574219
1,88706493377686
1,89201354980469


3) Тупо C#,

Код:
Скрытый текст:
Код: Выделить всё
using UnityEngine;
using System.Collections;

[ ExecuteInEditMode() ]

public class Searching : MonoBehaviour {
   int size = 6378;
   // Use this for initialization
   void Start () {
      
   GameObject[] objs = new GameObject[size];
   int[] hash = new int[size];
   int i=0;
   double j=Time.realtimeSinceStartup;
   int k=0;
   objs = (GameObject[]) FindObjectsOfType(typeof(GameObject));
      
   for(i=0; i<size;i++){
      hash[i]=1;
   }
   
   for(i=0; i<size; i++) {
      if(hash[i]==1){
         for (k=i; k<size; k++) {
            GameObject boo = objs[i];
            if((hash[k]==1)&&(objs[k].renderer.sharedMaterial.GetTexture("_MainTex").name == boo.renderer.sharedMaterial.GetTexture("_MainTex").name)){
               objs[k].renderer.sharedMaterial = boo.renderer.sharedMaterial;
               hash[k]=0;
            }   
         }
      }
   }
   
   Debug.Log(Time.realtimeSinceStartup - j);
   
   }   
}
Результаты:
Код: Выделить всё
1,48643779754639
1,51362609863281
1,60339546203613
1,49700164794922
1,57081031799316


Система: Q9550 4.0 Ghz, X48, 8192 MB memory DDRII @942 Mhz, HD4870 1GB @800 Mhz.
Последний раз редактировалось wild_r 29 май 2009, 22:11, всего редактировалось 3 раз(а).
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

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

Сообщение Neodrop 29 май 2009, 19:39

А...Чёрт... А вы не можете выложить сравнение в цифрах компактно? У мну галаза разбегаются.
Только цифры, без кода... :-?
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

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

Сообщение Neodrop 29 май 2009, 20:20

ЖабаСкрипт с директивой близка к Шарпу. Что и требовалось доказать. Разница примерно 10%.
Но всё равно Напильник делает Жабу.
Я пишу Напильником. (В Цытатник!) :ymparty:
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

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

Сообщение wild_r 29 май 2009, 22:08

Отредактировал.

Появилось пара вопросов: откуда такие разбросы в Напильнике и в обычной ЖС? Из-за сборщика мусора? Можно еще как-нибудь оптимизировать код?
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

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

Сообщение Neodrop 30 май 2009, 09:28

Это из-за автоприведения типов.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

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

Сообщение wild_r 30 май 2009, 14:39

Юзербар крут! \m/
wild_r
UNITрон
 
Сообщения: 220
Зарегистрирован: 16 апр 2009, 20:46
Откуда: Россия, Санкт - Петербург
  • ICQ

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

Сообщение Neodrop 30 май 2009, 15:08

;;) :-
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Пред.

Вернуться в Код

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2