Войти
ПрограммированиеФорумОбщее

Что быстрее (4 стр)

Страницы: 13 4 5 610 Следующая »
#45
13:44, 20 июля 2009

Z
> Ну, OOP, все дела. Так получилось, что некие per-frame per-object запросъ
> делаются через полиморфизм, тестили на PC, бъло незаметно медленее. Как
> оказалось, на других процессорах все не так.

И что, было

virtual AABB SceneObject::getAABB() ? 
или virtual bool SceneObject::checkFrustrum( const Frustrum & frustrum )
?


Что касается разных CPU. Был такой случай, VTune на K7 показал в одном месте, а на P4 в другом :)


#46
13:45, 20 июля 2009

Z

> Ну, OOP, все дела.

Не бойся писать "ООП" по-русски, у нас это не зазорно.

#47
13:46, 20 июля 2009

Z
> > > никакой иерархии
> Есть йерархия, 10к в фрустуме.

10K  в frustrum ? А сколько в сцене тогда? 100 K ?

Если иерархия была - какая глубина ? сколько в среднем детей ? Была быстрая проверка на квадрат расстояния ?
Узлы сцены объекты одного класса ? Если да, как они создавались ? Через new ?

#48
13:48, 20 июля 2009

Z
<Если знаешь проект, введи опциональное отключние разных модулей - вот тебе и грубая прикидка>
Поясни, мне, чайнику - что не так в этой фразе ?

#49
13:53, 20 июля 2009

San
Ну вот, мъсли обобщено и не спускайся до частностей - автор особо не углублялся в платформ специфики.
Представь такой код - все написано полиморфно, функции которъе кверят у обьекта рендер даннъе, баундинг сферу, флажочки о свойствах, етц.
На PC ето работает - даже економит местами память (примерно можно реализовать рендер обьектъ у которъх общие рендер даннъе, а рендер об етом не будет знать, т.к. тащит даннъе из полиморфнъх функций). Никто ето говнокодом раньше не считал. После запуска сего чуда, оказалось что оно ровно тормозит, везде. На всех стъках с рендером. Ето после применения правила об оптимизации самъх узких мест - узких мест уже нет. Тормозит все, немного, но тормозит.
Так вот, автор советует размъшлять скорее в терминах железа, а не реализации. Никто не заставляет писать на ассемблере.
Разсуждение об чистоте кода / простоте сорса доводит до разчленения данной задачи на очень мелкие составляющие, что в данном случае оказалось не айс. Т.е. если охота поднимать уровень, надо думать немного иначе, в момент написания кода, а не потом, когда профайлер даже не помогает.
Пример из той же оперъ - имеем обьект,

class IRenderObj
{
  virtual const BSphere const * GetBSphere() const = 0;
// или
  virtual void GetBSphere( BSphere & bs ) const = 0;
// или
  virtual bool Cull( const Frustum & fr ) const = 0;
};

Какой вариант лучше? Какой вариант хороший?

#50
13:57, 20 июля 2009

Z

> Представь такой код - все написано полиморфно...

> Никто ето говнокодом раньше не считал.

Ага. Лет 15 назад.

#51
13:58, 20 июля 2009

DEN
> Ага. Лет 15 назад
Отмотай с тех лет 15 назад - лет 15 вперед и расскажи про то, как надо написать.

#52
14:00, 20 июля 2009

Z
> class IRenderObj
> {
> virtual const BSphere const * GetBSphere() const = 0;
> // или
> virtual void GetBSphere( BSphere & bs ) const = 0;
> // или
> virtual bool Cull( const Frustum & fr ) const = 0;
> };

Я не считаю это говнокодом, но  очень не оптимально.
А  в чем разница реализации в методах у разных классов ?
Зачем так было изначально писать ?

#53
14:00, 20 июля 2009

Z
И ты хочешь сказать что  иерархия ни чем  не помогла ?

#54
14:00, 20 июля 2009

Z
> Представь такой код - все написано полиморфно
А я и не говорил, что это хорошо и обобщенно :)
ЗЫ Автор хотел склеить 2 вещи - for_each и собственно, функцию. Вот это, на мой взгляд очень плохо.

#55
14:01, 20 июля 2009

Z

> Отмотай с тех лет 15 назад - лет 15 вперед и расскажи про то, как надо написать.

А самому учиться лень?

#56
14:01, 20 июля 2009

innuendo
> но очень не оптимально
В чем состоится неоптимальность?

>>А в чем разница реализации в методах у разных классов ?
Откуда берутся даннъе.

#57
14:01, 20 июля 2009

DEN
> А самому учиться лень?
Спасибо за совет, отвечать за свои слова лень?

#58
14:02, 20 июля 2009

innuendo

> Я не считаю это говнокодом

А я считаю. Это омерзительная запредельная каловая квинтэссенсия.

#59
14:03, 20 июля 2009

Z

> Спасибо за совет, отвечать за свои слова лень?

Может мне за тебя еще убийцу сталкера написать? Или чем ты там занят после уроков?

Страницы: 13 4 5 610 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.