Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 48 • Страница 3 из 3<  1  2  3
  Версия для печати (полностью) Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 29.09.2004
Откуда: Moscow-city
progn писал(а):
При этом С++ найтив код заточенный под конкретную платформу из той же VS2005 все равно чуть быстрее, но зато .NET универсальнее

Медленнее работает только при первом запуске, и то на совр. процессорах ты это не заметишь.

progn писал(а):
Проблема .net в другом, прожорливость по памяти, сборка мусора и т.п. это губит производительность на корню у серьезных объемных программ.

В серьезных проектах для таких вещей иногда внедряют блоки неуправляемого кода. Но это пока, думаю в скором времени оптимизация достигнет такого уровня, что и без этого можно будет обойтись.

_________________
Truth in the trance



Партнер
 

Member
Статус: Не в сети
Регистрация: 15.08.2007
civil-gb писал(а):
Ну я так понимаю, что объекты то конечно создавать там можно, но не обязательно. Структура программирования совсем другая, можно сказать их идеология. Я тоже начинал с процедурно-ориентированных языков типа паскаля и думал что лучше ничего нельзя придумать. Но когда познакомился с ООП, то понял всю мощь этой технологии и поменял свое мнение.


не, ты не понял, пофиг абсолютно на что API OGL не ОО, вот у тебя в движке есть объект "дерево", есть метод draw и там ты его рисуешь хоть на OGL хоть на DX.
То что API не ОО не заставляет тебя при использовании этого API писать только структурную программу. API OpenGL удобен и без ОО-механизмов.


 

Member
Статус: Не в сети
Регистрация: 29.09.2004
Откуда: Moscow-city
progn Ну то что функции ты можешь вызывать это понятно, но ты сможешь разобраться потом где и какую функцию вызывал, если у тебя прога дала сбой (при условии что в ней тысячи строк кода)? Почему та или иная функция некорректно работает в паре с другой и т.д. и т.п. ООП в таких случаях использовать намного удобней.

_________________
Truth in the trance


 

Member
Статус: Не в сети
Регистрация: 15.08.2007
civil-gb писал(а):
progn писал(а):
При этом С++ найтив код заточенный под конкретную платформу из той же VS2005 все равно чуть быстрее, но зато .NET универсальнее

Медленнее работает только при первом запуске, и то на совр. процессорах ты это не заметишь.


всегда медленнее, первый запуск не в счет естественно. Проверял на маленькой счетной программе, компилировал в С++ CLR и native с различными оптимизациями. Сложно сделать качественную оптимизацию сначала на промежуточный машинный язык, а потом в native.

Цитата:
В серьезных проектах для таких вещей иногда внедряют блоки неуправляемого кода. Но это пока, думаю в скором времени оптимизация достигнет такого уровня, что и без этого можно будет обойтись.


Не, это принципиальная штука, освобождением памяти занимается не программист , а системный сборщик мусора. Но вот незадача, программист то точно знает когда память ему не нужна, и при интенсивной работе (new/delete) с памятью все можно сделать идеально. А на платформах типа Java / .NET нельзя принципиально, память зафрагментируется т.е. допустим в идеальном случае данные некого объекта влезают на одну страничку памяти, а при фрагментации памяти эти же данные размажутся на десятке страниц, + там будут данные других объектов, пустые блоки, блоки которые помечены как освобожденные, но еще еще не поджатые сборщиком, каша короче. Это фатально для производительности, будем проигрывать дестятки-сотни процентов в производительности, одни сплошные кэш промахи проца, а если физической памяти не хватит, и включится свап, то это будет вообще звиздец, уже потери будут измерятся многими порядками. Также система сборки мусора может включаться в неподходящиее моменты, получим непредвиденные серьезные провалы производительности.
Добавлено спустя 9 минут, 23 секунды
civil-gb писал(а):
progn Ну то что функции ты можешь вызывать это понятно, но ты сможешь разобраться потом где и какую функцию вызывал, если у тебя прога дала сбой (при условии что в ней тысячи строк кода)? Почему та или иная функция некорректно работает в паре с другой и т.д. и т.п. ООП в таких случаях использовать намного удобней.


я не понимаю в чем проблема, вот не отрисовывается у тебя объект "дерево" смотришь там подробнее.


 

Member
Статус: Не в сети
Регистрация: 29.09.2004
Откуда: Moscow-city
progn писал(а):
всегда медленнее, первый запуск не в счет естественно.
Да код .net работает медленнее, но опять же, не до такой степени, чтобы это действительно было заметно.
progn писал(а):
там будут данные других объектов, пустые блоки, блоки которые помечены как освобожденные, но еще еще не поджатые сборщиком, каша короче.
На врядли это случится, вроде для управляемого кода память отдельно отводиться.
progn писал(а):
Также система сборки мусора может включаться в неподходящиее моменты, получим непредвиденные серьезные провалы производительности.
Иногда можно самому удалять объекты без сборщика мусора.

На самом деле управляемый код работает стабильно и без сбоев, не так часто требуется применять неуправляемый код, а если и требуется, то нужно чтоб это делал человек знающий свое дело, потому как конечно дров можно много наломать и обвинить во всем CLR.
В силу своей работы мне не требуется внедрять в свои программы неуправляемый код, потому что у меня все хорошо работает без него. Но написание игр это конечно отдельная тема.
Добавлено спустя 4 минуты, 39 секунд
progn писал(а):
я не понимаю в чем проблема, вот не отрисовывается у тебя объект "дерево" смотришь там подробнее.
в случае с деревом конечно все просто...

_________________
Truth in the trance


 

Member
Статус: Не в сети
Регистрация: 17.11.2003
Откуда: Екатеринбург
Cootri писал(а):
Я говорю только про D3D....

Я написал в предыдущеем посте почему современные игры в основном под D3D.
civil-gb писал(а):
JIT компилирует промежуточный код (IL) в обычный x86 код. т.е. его конечно не правильно называть интерпретатором, это компилятор, но так как он компилирует из одного кода в другой его иногда называют интерпретатором, что не совсем верно

И? В прогу на C++ я напихаю SSE(2)-интринсиков выполняющих fp-вычисления за счет чего прога будет максимально эффективно работать (особенно на современных процах), а как я это сделаю для проги под .Net? Или думаешь транслятор такой умный и сам макимально эффективно соптимайзит огромный fp-код под SSE(2)?
civil-gb писал(а):
Не, просто ребенок еще

Получается все кто иногда фанатеет в извечных фанатских ветках - это все дети :shock: ?
progn писал(а):
Проблема .net в другом, прожорливость по памяти, сборка мусора и т.п. это губит производительность на корню у серьезных объемных программ.

Вот как раз память то и надо экономить, никогда не писал и не буду писать приложения чрезмерно расходующие память :)
progn писал(а):
AI и т.п. описание поведение в конкретной игре уже давно принято делать на высокоуровневых скриптах типа Lua или Python

Узкие места (вроде сложного нахождения путей, физика, столкновения и т.п.) все же пишутся на С++.

_________________
|АМД процы не так уж и плохи|
|Но все-таки Интел лучше|


 

Member
Статус: Не в сети
Регистрация: 15.08.2007
civil-gb писал(а):
progn писал(а):
всегда медленнее, первый запуск не в счет естественно.
Да код .net работает медленнее, но опять же, не до такой степени, чтобы это действительно было заметно.
progn писал(а):
там будут данные других объектов, пустые блоки, блоки которые помечены как освобожденные, но еще еще не поджатые сборщиком, каша короче.
На врядли это случится, вроде для управляемого кода память отдельно отводиться.


заметно, до десятков процентов разница.
фрагментация "кучи" реальная проблема и на С++, а не теоритическая.
Крупные проекты под Java жрут много памяти и тормозят из-за этого, это не для кого не секрет, хотя там тот же JIT, я пояснил почему это так. В Net та же идеология, только крупных программ я не видел, и примеров не знаю.

Цитата:
На самом деле управляемый код работает стабильно и без сбоев, не так часто требуется применять неуправляемый код, а если и требуется, то нужно чтоб это делал человек знающий свое дело, потому как конечно дров можно много наломать и обвинить во всем CLR.


Net и Java хороши для определенных областей (средне-мелкие офисные программки) где не требуется жесткий контроль ресурсов и высокая производительность.

неупровляемый код, это костыли, которые разрушают всю красоту идеи.
Добавлено спустя 4 минуты, 44 секунды
BloodyWerewolf писал(а):
В прогу на C++ я напихаю SSE(2)-интринсиков выполняющих fp-вычисления за счет чего прога будет максимально эффективно работать (особенно на современных процах)


компилятор С++ и так при соответтсвующей опции (/arch:SSE2) это все делает. JIT компилятор тоже.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 48 • Страница 3 из 3<  1  2  3
-

Часовой пояс: UTC + 3 часа


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

Сейчас этот форум просматривают: -sabirus- и гости: 27


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan