снова строки

Раздел, посвящённый самому важному - скорости.

снова строки

Сообщение gnoblin 15 окт 2011, 19:27

string kakashka = "какашка";

void OnGUI()
{
GUILayout.Label(kakashka);
}


и

void OnGUI()
{
GUILayout.Label("какашка");
}


в плане реакции на этот код сборщика мусора - есть разница, как думаете?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: снова строки

Сообщение seaman 15 окт 2011, 19:45

Думаю.
Во втором варианте никаких переменных не будет. Строка - константа вставляется прямо в код. Поэтому для сборщика мусора вообще нет работы.
В первом варианте все зависит от компилятора. VS почти 100% также бы оптимизировала и вставила константу в код. Моно не уверен. Возможно оставит переменную. Следовательно появится работа GC.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: снова строки

Сообщение artk 15 окт 2011, 20:48

В любом случаи при написании GUILayout(хоть одно или сто) CG сходит с ума. Используйте useGUILayout=false; :ar!
Если с обычным GUI, то CG c не динамическими стрингами работает нормально, кроме GUI.Label(rect, "какашка"+" ам-ням-ням-нам"+i );. Еще понял, что надо использовать константы, тогда при компиляции в натив, все само оптимизируется.
П.С. С этим CG пришлось рвать себе шаблон, вдолбленным учителями, что надо везде использовать локальные переменные, и в функцию передавать параметры, не только ссылочные.
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: снова строки

Сообщение DbIMok 15 окт 2011, 22:14

artk писал(а):тогда при компиляции в натив

?!
gnoblin писал(а):есть разница, как думаете?

нет разницы
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: снова строки

Сообщение artk 16 окт 2011, 01:15

DbIMok писал(а):?!

:-s Я разве ошибаюсь, что (c#) (js) компилируются сначала в нативный код?
Если нет, то как можно просмотреть этот код, или уже в asm?
Аватара пользователя
artk
Старожил
 
Сообщения: 749
Зарегистрирован: 22 май 2011, 12:22

Re: снова строки

Сообщение DbIMok 16 окт 2011, 01:21

из наших скриптов получается managed code, не native. посмотреть можно каким-нибудь IL дизассемблером, типа reflector
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: снова строки

Сообщение gnoblin 31 окт 2011, 17:42

А кто-нибудь замерял пользу от использования StringBuilder и насколько вообще неграмотная работа со строками может подгадить/добавить пиков в профайлер?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: снова строки

Сообщение Woolf 31 окт 2011, 17:51

gnoblin писал(а):А кто-нибудь замерял пользу от использования StringBuilder и насколько вообще неграмотная работа со строками может подгадить/добавить пиков в профайлер?


по сишарпу не скажу, а вот по джаве - если у вас в секунду слаживается больше ста строк - уже имеет смысл юзать стрингбилдер. Как-то пришлось делать обработку базы данных документов, надо было составить список того, что есть в базе в виде текстового файла с реквизитами. В базе было что-то около миллиона документов. Ну, использование стрингбилдера сократло время построение такого списка с пяти минут до одной.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: снова строки

Сообщение DbIMok 31 окт 2011, 19:10

если одиночный запуск, наример Debug.Log то можно не экономить. если частый вызов/цикл, то лучше оптимизировать
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: снова строки

Сообщение Zaicheg 31 окт 2011, 22:42

gnoblin писал(а):А кто-нибудь замерял пользу от использования StringBuilder

Я получал экономию в размере "очень много".
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: снова строки

Сообщение burlak 01 ноя 2011, 07:40

gnoblin писал(а):А кто-нибудь замерял пользу от использования StringBuilder и насколько вообще неграмотная работа со строками может подгадить/добавить пиков в профайлер?


От задачи зависит. Если в цикле что то типа str += blablabla, то StringBuilder очень помогает, особенно на мобилах с медленной памятью.
С уважением, Дмитрий Бурлаков.
skype: dmitry.burlakov
email: _dmitry.burlakov@gmail.com
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург


Вернуться в Оптимизация

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

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