22 Сентября 2024, 07:42:17
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > причина падения производительности
причина падения производительности
(Прочитано 11954 раз)
  [1]
Печать
redis | ** | Пользователь | Сообщений: 89 | « 25 Сентября 2009, 16:58:01 »
причина падения производительности |
0
Всем привет. Я бы хотел спросить у знающего народа, собственно у меня есть проект в нём полигонов не много около 100 тысяч, но очень много блоков и каналов массивов, array table 5 штук, и мне бы хотелось узнать почему проект тормозит? Вроде говорилось что всё зависит от железа, так у меня из 2 гигов оперативы 300 мб используется, и проц загружен лишь на половину, так вот мне интересно может это сам квест тормозит? может есть предел кол-ва блоков?
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #1 25 Сентября 2009, 18:14:05 »
Re: причина падения производительности |
1
Нет, это не сам квест, и вряд ли есть некий предел ограниченный программно. Скорее всего нужна оптимизация твоей программы. Наверно ты где-то что-то не учитываешь, или не знаешь каких то ньюансов.
Например большинство ченелов просчитывают свой результат каждый раз когда к ним обращаются, и если ты конектиш некий такой вычисляемый пиздец в цикле, то это может стать причиной падения производительности. Облегчить цикл можно вынеся все вычисления не зависящие от итерации цикла наружу, там посчитать и сохранить в какую-то переменную (Set Value, Set Vector, и т.д.)
Но это был банальный пример. Грустнее если не знать некоторых особенностей работы компъютера, все из которых так сразу и не перечислить и не объяснить. Например очень тяжелая операция записи RTT текстуры в обычную, потому что первая храниться на видяхе а вторая в операционной памяти с которой работает центральный процессор. И видяхи не расчитаны на быструю передачу данных процессору, вот с проца на видяху -- пожалуйста. Так вот, ошибкой будет в каждом рендере выполнять операцию копирования из RTT в обычную, хотя в документации квеста это никак на прямую не упоминается  Улыбающийся Ну и выделение памяти тоже не такая быстрая операция как может показаться. Каждый раз когда вы выполняете Text Operator -- это выделение памяти под результат. Каждое создание элемента в массиве -- тоже.
Я не хочу сказать, что нужно отказаться от этих операций вовсе, просто постарайтесь избежать их использования в серьёзном цыкле, который будет выполняться каждый рендер
redis | ** | Пользователь | Сообщений: 89 | «Ответ #2 25 Сентября 2009, 18:59:06 »
Re: причина падения производительности |
2
Спасибо за подробный ответ да ещё и с примерами)) но если под словом цикл вы подразумеваете канал for loop, то я его почти не использую(только для стрельбы), основная логика у меня ии, и для каждого нового моба я просто копирую группу каналов, и подсоединяю к рендеру,(мобов пока 3) или лучше цикл использовать ?
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #3 25 Сентября 2009, 19:27:48 »
Re: причина падения производительности |
3
ну с точки зрения экономии труда, то для подключения мобов лучше использовать цикл )) их ведь собирается быть когда-то больше 3-ёх?

если под словом цикл вы подразумеваете канал for loop, то я его почти не использую
тогда у меня вопрос -- как ты работаешь с теми пятью массивами которые ты упоминал?

ну а в целом могу посоветовать древний как мир способ вычисления затыка -- отключать какие-то отдельные куски программы(такие чтоб от них не зависела производительность остальных) по-очереди, и смотреть когда производительность вернётся))
redis | ** | Пользователь | Сообщений: 89 | «Ответ #4 25 Сентября 2009, 19:44:09 »
Re: причина падения производительности |
4
Ну с массивами я так работаю, у меня есть массив в котором два столбца, кол-во жизней, и матрица, дальше есть счётчик который считает от 0 до 3, тем самым перебирая матрицы в массиве, когда например условие нужной дистанции до обьекта будет истино то счётчик останавливается. А мне вот интересно откуда у вас такие познания про работу квеста и компьютера ?))) лично я читаю и диву даюсь) а то вдруг я уже кучу грубых ошибок наделал
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #5 26 Сентября 2009, 01:42:52 »
Re: причина падения производительности |
5
Ну с массивами я так работаю, у меня есть массив в котором два столбца, кол-во жизней, и матрица, дальше есть счётчик который считает от 0 до 3, тем самым перебирая матрицы в массиве, когда например условие нужной дистанции до обьекта будет истино то счётчик останавливается.

ну это фактически и есть For Loop, только немного в более извращённой форме  Подмигивающий

А мне вот интересно откуда у вас такие познания про работу квеста и компьютера ?))) лично я читаю и диву даюсь) а то вдруг я уже кучу грубых ошибок наделал
ну для меня это работа и мой хлеб)) 4 года стажа, из которых 1 год с квестом.
Ошибок конечно наделал, но это ничего страшного, я тоже делаю ошибки. На них нужно учиться.
Viik | **** | Старожил | Сообщений: 302 | «Ответ #6 26 Сентября 2009, 02:18:25 »
Re: причина падения производительности |
6
Логику не обязательно проверять на каждом кадре, разбей расчеты на несколько кадров. Например на первом кадре проверяеш растояние, через 5-ть кадров вычисляеш что делать если изменились какие-то условия из-за растояния, на 10-м выполняеш условия. При этом разных мобово можно разгрузить на разные кадры.
redis | ** | Пользователь | Сообщений: 89 | «Ответ #7 26 Сентября 2009, 04:44:23 »
Re: причина падения производительности |
7
Ого спасибо за советы просветили меня, а не подскажите как реализовать чтобы каналы вызывались через определённое кол-во кадров ? у меня есть предположение что через OneTimeReset ?
mishich | * | Новичок | Сообщений: 27 | «Ответ #8 26 Сентября 2009, 10:39:56 »
Re: причина падения производительности |
8
Здравствуйте ! Вот читал,читал,и не понял!?
С оптимизацией всё ясно - дело нужное и обязательное!

Цитировать
так у меня из 2 гигов оперативы 300 мб используется, и проц загружен лишь на половину

Допустим я оптимизирую проект . От этого система будет использовать все ресурсы компьютера ? при том что до оптимизации ресурсы использовались лишь на 30 % Непонимающий

Разве Квест не должен использовать ресурсы по полной Непонимающий

Извиняюсь за вопросы , но я серьёзно недопонимаю всего этого.

 
DimiS | **** | Старожил | Сообщений: 284 | «Ответ #9 26 Сентября 2009, 13:07:24 »
Re: причина падения производительности |
9
Ну может вы когда замеряли производительность то, фокус был не на квесте, он тогда не гоняет рендер. Или может проверяли на квест эдиторе, а не на запаблишеном проекте. Ну и возможно это какие-то хитрости связанные с двухядерностью процессора.
mishich | * | Новичок | Сообщений: 27 | «Ответ #10 26 Сентября 2009, 14:13:19 »
Re: причина падения производительности |
10
DimiS Спасибо за уделённое время!
Viik | **** | Старожил | Сообщений: 302 | «Ответ #11 27 Сентября 2009, 15:58:05 »
Re: причина падения производительности |
11
Ого спасибо за советы просветили меня, а не подскажите как реализовать чтобы каналы вызывались через определённое кол-во кадров ? у меня есть предположение что через OneTimeReset ?
Самое простое через IF, делаеш счетчик, на каждом кадре увеличиваеш на единицу (обязательно сделай математику принудительно обновляемой только один раз за кадр Ctrl+T), если значение счетка совпадает с нужны выполняеш ветку ченелов и счетчик сбрасываеш в ноль.
 
  [1]
Печать
 
Quest3D - Русскоязычное сообщество > Quest3D > Программирование > причина падения производительности
Перейти в: