C# заставляет гореть!

Общие вопросы о Unity3D

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 16 апр 2019, 14:19

seaman писал(а):
для c++ я нашел довольно хорошую, мне переписывать лень

Для чего шум?
Просто есть реализации на GPU, что скорее всего будет быстрее.

На GPU в десять раз, а то и больше быстрее, проблема в том что у меня видеокарта и так захлебывается, я вот сначала сделал через компьют шейдер и понял что у меня видеокарта не тянет одновременно эти мешы рендерить и шум считать, очень медленно генерирует когда уже в камере много мешей да и фпс находится на уровне 20 во время генерации, поэтому решил все таки на процессоре считать, если бы я меш не в реалтайме делал то да выгоднее было бы всё на gpu просчитывать
Последний раз редактировалось NAGIBATOR228pacan 16 апр 2019, 14:31, всего редактировалось 1 раз.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение AlcogGMS 16 апр 2019, 14:27

NAGIBATOR228pacan писал(а):
Dewa1s писал(а):
NAGIBATOR228pacan писал(а):
Cr0c писал(а):
NAGIBATOR228pacan писал(а):Хабр https://habr.com/ru/post/266163/.

Ну вы же понимаете что скорость равная c++ достигается только с помощью unsafe и указателей и никак иначе


Нет, как раз таки unsafe играет очень мизерную часть, и выигрывает далеко не всегда, если использовать его как с++ - раскидываясь повсюду ссылками и указателями можно сильно усугубить производительность, а для выиграша используется довольно редко и в узких местах, например для избегания подкапотной рефлексии в копировании тяжелых структур при переносе массивов
AlcogGMS
UNIт
 
Сообщения: 50
Зарегистрирован: 11 янв 2019, 21:57

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 16 апр 2019, 15:01

AlcogGMS писал(а):
NAGIBATOR228pacan писал(а):
Dewa1s писал(а):
NAGIBATOR228pacan писал(а):
Cr0c писал(а):
NAGIBATOR228pacan писал(а):Хабр https://habr.com/ru/post/266163/.

Ну вы же понимаете что скорость равная c++ достигается только с помощью unsafe и указателей и никак иначе


Нет, как раз таки unsafe играет очень мизерную часть, и выигрывает далеко не всегда, если использовать его как с++ - раскидываясь повсюду ссылками и указателями можно сильно усугубить производительность, а для выиграша используется довольно редко и в узких местах, например для избегания подкапотной рефлексии в копировании тяжелых структур при переносе массивов

C++ выигрывает в производительности только за счет того что в c# используется больше инструкций например на проверку того не выходит ли элемент за рамки массива итд, в c++ этого всего нету и поэтому он быстрее, в unsafe режиме можно избежать данных проверок и сократить скорость до уровня c++, по другому c# всегда будет проигрывать
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение AlcogGMS 16 апр 2019, 15:04

NAGIBATOR228pacan писал(а):а для c++ я нашел довольно хорошую, мне переписывать лень


так может лень здесь ключевой фактор ?

NAGIBATOR228pacan писал(а):зачем мне писать изначально на том у кого есть предел, если можно сразу писать на c++


предел есть даже у ассемблера

NAGIBATOR228pacan писал(а):в c# используется больше инструкций например на проверку того не выходит ли элемент за рамки массива


не всегда

NAGIBATOR228pacan писал(а):пытался кстати в компьют шейдере это все делать, но это оказалось крайне медленно, потому что нагрузка на гпу и так слишком высокая с этими миллионами вершин(кстати моя следующая проблема заключается в этом)


вы как мне показалось реализовали что-то вроде цпу кулинга, думаю compute шейдера должны обогнать цпу в подобной задаче, особенно если синхронизировать GetData с рендер-потоком и немного погемороится с графическим контекстом (кстати одна из немногих задач для которой прийдется писать плагин), может видеокарта не самая новая, более-менее новые кушают 30-40 кк поликов без проблем
Последний раз редактировалось AlcogGMS 16 апр 2019, 15:24, всего редактировалось 1 раз.
AlcogGMS
UNIт
 
Сообщения: 50
Зарегистрирован: 11 янв 2019, 21:57

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 16 апр 2019, 15:16

AlcogGMS писал(а):
NAGIBATOR228pacan писал(а):а для c++ я нашел довольно хорошую, мне переписывать лень


так может лень здесь ключевой фактор ?

NAGIBATOR228pacan писал(а):зачем мне писать изначально на том у кого есть предел, если можно сразу писать на c++


предел есть даже у ассемблера

NAGIBATOR228pacan писал(а):в c# используется больше инструкций например на проверку того не выходит ли элемент за рамки массива


не всегда

NAGIBATOR228pacan писал(а):пытался кстати в компьют шейдере это все делать, но это оказалось крайне медленно, потому что нагрузка на гпу и так слишком высокая с этими миллионами вершин(кстати моя следующая проблема заключается в этом)


вы как мне показалось реализовали что-то вроде цпу кулинга, думаю compute шейдера должны обогнать цпу в подобной задаче, особенно если синхронизировать GetData с рендер-потоком (кстати одна из немногих задач для которой прийдется писать плагин), может видеокарта не самая новая, более-менее новые кушают 30-40 кк поликов без проблем

1. А какой смысл переписывать и так все хорошо к тому же с указателями работать это тот еще геморой да и библиотека на куча страниц ну это нафиг.
2. Предел есть везде, просто где-то он физический, как у ассемблера, а есть предел искусственный как в c#.
3. Где например?
4. Все точно считалось на гпу, проблема не в том что на гпу медленно считается, я уверен что если сравнивать гпу и цпу в этой задачи, гпу выиграет в 10 раз, тут дело такое что gpu и так уже плавится от перегрузки, во первых там рендерится куча вершин во вторых установка массива вершин и треугольников с огромным количеством элементов сильно тормозят гпу это даже можно понять по тому как из-за изменения шейдера скорость генерации меняется причем значительно, а если еще шум добавить то там вообще перегрузка нереальная, при этом процессор прохлождается и как итог 20 фпс во время генерации в статистике, когда на цпу все нормально и то и то нагружено равномерно и фпс держится на 100+
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: C# заставляет гореть!

Сообщение AlcogGMS 16 апр 2019, 15:20

компилятор может включать оптимизации при некоторых условиях и может отключать проверку границ, либо вовсе делать распаковку цикла
AlcogGMS
UNIт
 
Сообщения: 50
Зарегистрирован: 11 янв 2019, 21:57

Re: C# заставляет гореть!

Сообщение jetyb 18 апр 2019, 07:49

Но как тогда ты меш создашь, напишешь mesh.vertices = array, и он тебе всегда будет создавать меш с максимальным количеством вершин, а это убийство гпу, а с треугольниками все еще будет страшнее, надо либо создавать еще один массив либо первый пересоздавать и в обоих случаях - минус память

Специально для этого есть метод Mesh.SetVertices(List<Vector3> inVertices).
Берешь один список (List там все хранит в одном массиве и при Clear() не изменяет его, а обнуляет счетчик Count), Clear-ишь его и используешь для нового меша.
jetyb
Адепт
 
Сообщения: 1486
Зарегистрирован: 31 окт 2011, 17:21

Re: C# заставляет гореть!

Сообщение getAlex 18 апр 2019, 11:58

Мастер, который всю жизнь чинил только одну марку машин, влезает в другую - без каких-либо знаний, у него всё ломается и ничего не получается. И т.к. ему лень что-то заново учить, читать инструкции, а на себя злиться он не умеет, то он вспыхивает и говорит что виновата "говняная машина".

Старые пердуны так же зляться, когда им нужно позвонить, но вместо их привычного дискового телефона, им дают смартфон. Они там что-то пытаются тыкать, а затем в гневе бросают его и говорят что говно этот ваш смартфон.
getAlex
Адепт
 
Сообщения: 1775
Зарегистрирован: 10 авг 2013, 18:30

Re: C# заставляет гореть!

Сообщение getAlex 18 апр 2019, 12:01

NAGIBATOR228pacan писал(а):C++ выигрывает в производительности только за счет того что в c# используется больше инструкций например

А линукс бла-бла, а ассемблер бла-бла-бла. Компилятор там, компилятор сям. Этот язык говно, а этот не говно.

Да иди нахер, тролль.
getAlex
Адепт
 
Сообщения: 1775
Зарегистрирован: 10 авг 2013, 18:30

Re: C# заставляет гореть!

Сообщение lawson 18 апр 2019, 12:48

заново учить, читать инструкции, а на себя злиться он не умеет, то он вспыхивает и говорит что виновата "говняная машина".

Да иди нахер, тролль.

Вы видимо тоже не умеете принимать чужое, отличное от вашего мнение!?
lawson
UNIверсал
 
Сообщения: 481
Зарегистрирован: 14 сен 2012, 21:20

Re: C# заставляет гореть!

Сообщение NAGIBATOR228pacan 18 апр 2019, 13:33

jetyb писал(а):
Но как тогда ты меш создашь, напишешь mesh.vertices = array, и он тебе всегда будет создавать меш с максимальным количеством вершин, а это убийство гпу, а с треугольниками все еще будет страшнее, надо либо создавать еще один массив либо первый пересоздавать и в обоих случаях - минус память

Специально для этого есть метод Mesh.SetVertices(List<Vector3> inVertices).
Берешь один список (List там все хранит в одном массиве и при Clear() не изменяет его, а обнуляет счетчик Count), Clear-ишь его и используешь для нового меша.

Я знаю, мне именно массив нужен же, со списком я и так сделал, а мне нужно было с массивом хотя сейчас уже не нужно
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Пред.

Вернуться в Общие вопросы

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

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