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

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

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

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

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

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

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

Сообщение Woolf 15 апр 2019, 21:41

Но ведь аналогичный код на c++ всегда будет быстрее

Нет

тупо 100 мс заполняется ты уже ничего не поделаешь кроме как перепишешь это на c++ и получишь небольшую или большую выгоду

Или еще больший проигрыш.

да можно сделать параллельно это как-то, но и на c++ эта параллельность будет работать опять же быстрее

нет. в лучшем случае, так-же.

согласись лучше код который выполняется за 10 секунд нежели код который выполняется 15 секунд

Если ваш код выполняется 10 секунд, или 15 секунд, это говнокод, независимо от языка, на котором он написан.

но он на c++ он всегда будет быстрее

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

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

Сообщение Cr0c 16 апр 2019, 01:53

Woolf писал(а):Если ваш код выполняется 10 секунд, или 15 секунд, это говнокод, независимо от языка, на котором он написан.

Не надо с ним говорить, у него каша в голове.
Изображение
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

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

Сообщение Dewa1s 16 апр 2019, 04:56

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

Почитал часть комментов - там вполне обоснованно (и очень вежливо) объясняется ущербность данных тестов.

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

https://habr.com/ru/post/266163/#comment_8562607
Если берешься писать на С++ - ответственность за кроссплатформенность ложится на твои плечи, если шарп практически гарантированно запустится на любой платформе, то плюсы тебе придется самому собирать под вин, мак, линь и т.д.
А вообще почитайте комментарии к этой статье, там этот холивар конкретно пережевывается
Ну и вот https://habr.com/ru/post/266163/#comment_8563155
И там под ним еще комментарий
Аватара пользователя
Dewa1s
Старожил
 
Сообщения: 564
Зарегистрирован: 26 дек 2011, 02:12

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

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

Woolf писал(а):
Но ведь аналогичный код на c++ всегда будет быстрее

Нет

тупо 100 мс заполняется ты уже ничего не поделаешь кроме как перепишешь это на c++ и получишь небольшую или большую выгоду

Или еще больший проигрыш.

да можно сделать параллельно это как-то, но и на c++ эта параллельность будет работать опять же быстрее

нет. в лучшем случае, так-же.

согласись лучше код который выполняется за 10 секунд нежели код который выполняется 15 секунд

Если ваш код выполняется 10 секунд, или 15 секунд, это говнокод, независимо от языка, на котором он написан.

но он на c++ он всегда будет быстрее

Но в пять раз дороже. Можно поставить на бентли движок от камаза, но возить по 50 тонн грузов она все равно не сможет. Писать игровую логику на С++ это верх идиотизма. Мало того, что и язык сам по себе паскудный и нелогичный, так еще и никакого особо выигрыша не даёт, ни в производительности, ни в скорости написания. Плюс добавляет гемморой с утечками памяти и безопасностью кода. Кстати, сама [unity 3D] написана на С#, на плюсах там только обёртка к GAPI, т.е. менее 5% всего движка.

Ох уж эти сектанты которые пытаются доказать что земля плоская, зачем ты пытаешься доказать что c# быстрее если он просто не может физический быть быстрее, только с unsafe и указателями он может быть на одном уровне с c++, что ты пытаешься доказать я вообще не понимаю, вот только на c++ и библиотеки будут работать быстро в отличии от c#, где не только от тебя все зависит. Ну раз unity написана на c# то это частично объясняет то почему unity такой медленный по сравнению с другими движками, да c++ в плане удобства и правда хуже c#, но это только на начальных этапах, и да мой код выполняется не 10 15 секунд, 10 15 секунд он выполняется в корутине, если поставить unlit shader то вообще за 6 иногда бывает, без корутинов он выполняется около 160-200 мс создавая 1024 меша по 100-300к вершин каждый причем вся тормозная часть находится на c#, на c++ считается только шум, который там считается в 2.5 раза быстрее
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

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

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

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

Почитал часть комментов - там вполне обоснованно (и очень вежливо) объясняется ущербность данных тестов.

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

https://habr.com/ru/post/266163/#comment_8562607
Если берешься писать на С++ - ответственность за кроссплатформенность ложится на твои плечи, если шарп практически гарантированно запустится на любой платформе, то плюсы тебе придется самому собирать под вин, мак, линь и т.д.
А вообще почитайте комментарии к этой статье, там этот холивар конкретно пережевывается
Ну и вот https://habr.com/ru/post/266163/#comment_8563155
И там под ним еще комментарий

Насчет первого твоего утверждения спорить не буду ибо ничего об этом не знаю, но у меня есть сомнения, но хотя это одна из причин почему я делаю игры на unity, мне он нравится тем что можно собрать игру на любую платформу нажав всего 2 кнопки ничего не меняя в коде, если бы я делал игры исключительно под винду я бы подобные игры где возможности движка избыточны типо 2д платформеров я бы делал на с++/opengl. Ну вы же понимаете что скорость равная c++ достигается только с помощью unsafe и указателей и никак иначе, а что если надо будет подключить библиотеку то придется переписывать и её под unsafe код чтобы она работала также быстро как на c++ по-умолчанию, я вообще не хочу даже об этом спорить это глупо и бессмысленно, никто не начнет пытаться писать высокопроизводительный код на c# когда c++ для этого просто удобнее, также никто и не будет владея обоими языками пытаться писать легко читаемую и понятную программу, в который производительность вообще не важна, на c++, потому что c# в этом удобнее. Я не хочу как-то принизить c# по сравнению с c++, если бы кто-то из них определенно был бы во всем лучше то одного из них не уже не существовало бы, они применяются для разных задач, мне вот больше c++ все равно нравится больше ибо люблю более низкоуровневое программирование хотя то что c# более понятный для нормального человека и не имеет большинства минусов c++ с этим я согласен, но не в unity я всегда выберу c++
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

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

Сообщение Dewa1s 16 апр 2019, 10:18

никто не начнет пытаться писать высокопроизводительный код на c# когда c++ для этого просто удобнее

Нет, скорее никто не будет усложнять себе жизнь внедрением плагина на С++ в проект, если можно обойтись силами С#, пусть и с unsafe и указателями.
Плагин усложняет сборку, усложняет отладку, усложняет тестирование, и ради чего? Банально сделав всю эту генерацию асинхронной и раскидав числодробилку по потокам можно получить куда большую прибавку, нежели от плагина. Плагин и плюсы - это когда уже все возможные варианты решения проблемы средствами самого С# исчерпаны, и конкретно твой случай еще совершенно не такой
Аватара пользователя
Dewa1s
Старожил
 
Сообщения: 564
Зарегистрирован: 26 дек 2011, 02:12

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

Сообщение Saltant 16 апр 2019, 10:28

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

Плагин и плюсы - это когда уже все возможные варианты решения проблемы средствами самого С# исчерпаны

Или программист не шарит. В основном все проблемы от незнания инструмента.
Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2234
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт

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

Сообщение Cr0c 16 апр 2019, 11:17

Saltant писал(а):
Dewa1s писал(а):
никто не начнет пытаться писать высокопроизводительный код на c# когда c++ для этого просто удобнее

Плагин и плюсы - это когда уже все возможные варианты решения проблемы средствами самого С# исчерпаны

Или программист не шарит. В основном все проблемы от незнания инструмента.

Чувак наивен и считает, что если он напишет код на плюсах - тот станет "в разы быстрее". Ага, только если он не умеет писать быстрый код на шарпе, то и на плюсах напишет тормозной код (только шанс "выстрелить себе в ногу" вырастет раз так в 20). Очередной фанатик же.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

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

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

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

Нет, скорее никто не будет усложнять себе жизнь внедрением плагина на С++ в проект, если можно обойтись силами С#, пусть и с unsafe и указателями.
Плагин усложняет сборку, усложняет отладку, усложняет тестирование, и ради чего? Банально сделав всю эту генерацию асинхронной и раскидав числодробилку по потокам можно получить куда большую прибавку, нежели от плагина. Плагин и плюсы - это когда уже все возможные варианты решения проблемы средствами самого С# исчерпаны, и конкретно твой случай еще совершенно не такой

Да можно, но библиотеку для генерации шума, а для c++ я нашел довольно хорошую, мне переписывать лень, и пока я с этим unsafe балуюсь это все дало 0 результатов, похоже надо с указателями работать, да возможности языка конечно не исчерпаны, но зачем мне писать изначально на том у кого есть предел, если можно сразу писать на c++ и тогда когда я дойду до момента когда уже все дальше уже не смогу оптимизировать, мне не придется переписывать, тут же такой код что его чисто физический невозможно сделать так чтобы он генерировался в мгновение и в любом случае даже слабенькая прибавка будет довольно существенна, параллельность и прочее я еще дойду, пытался кстати в компьют шейдере это все делать, но это оказалось крайне медленно, потому что нагрузка на гпу и так слишком высокая с этими миллионами вершин(кстати моя следующая проблема заключается в этом), смысл мне не использовать все чтобы оптимизировать свой процесс, какой смысл, если можно ускорить, прибавка то реально значительная. К тому же всю эту параллельность и потоки мне легче на плюсах реализовать я в них чуть больше разбираюсь нежели в шарпе, хотя все равно придется в шарпе потому что меш строить в плагине как я понял быстрее не получится потому что нельзя отправлять списки, а перегонка массивов туда сюда и прочее занимает даже больше ресурсов чем генерация на шарпе в итоге с этими перегонками даже чуть медленнее чем на шарпе получается поэтому придется делать все в unity кроме шума конечно, он реально считается ну прямо намного быстрее и настройки этого шума мне нравятся
Последний раз редактировалось NAGIBATOR228pacan 16 апр 2019, 12:14, всего редактировалось 2 раз(а).
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

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

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

Saltant писал(а):
Dewa1s писал(а):
никто не начнет пытаться писать высокопроизводительный код на c# когда c++ для этого просто удобнее

Плагин и плюсы - это когда уже все возможные варианты решения проблемы средствами самого С# исчерпаны

Или программист не шарит. В основном все проблемы от незнания инструмента.

В этом есть доля правды, настоящий профи и с говенным инструментом сделает хорошо, но настоящий профи с хорошим инструментом сделает еще лучше, дно и днищенским инструментом сделает дно, а с хорошим чуть менее дно
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

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

Сообщение Dewa1s 16 апр 2019, 13:06

NAGIBATOR228pacan писал(а):кстати моя следующая проблема заключается в этом

Это твоя первая задача должна быть. Уходят миллионы вершин - уходит проблема со временем генерации, сотнями мегабайт мусора и т.д.
NAGIBATOR228pacan писал(а):прибавка то реально значительная

Если прибавка не покрывает оверхед от использования С++ - она не может считаться значительной.
Аватара пользователя
Dewa1s
Старожил
 
Сообщения: 564
Зарегистрирован: 26 дек 2011, 02:12

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

Сообщение seaman 16 апр 2019, 13:19

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

Для чего шум?
Просто есть реализации на GPU, что скорее всего будет быстрее.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

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

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

Woolf писал(а):
Но ведь аналогичный код на c++ всегда будет быстрее

Кстати, сама [unity 3D] написана на С#, на плюсах там только обёртка к GAPI, т.е. менее 5% всего движка.


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

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

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

Dewa1s писал(а):
NAGIBATOR228pacan писал(а):кстати моя следующая проблема заключается в этом

Это твоя первая задача должна быть. Уходят миллионы вершин - уходит проблема со временем генерации, сотнями мегабайт мусора и т.д.
NAGIBATOR228pacan писал(а):прибавка то реально значительная

Если прибавка не покрывает оверхед от использования С++ - она не может считаться значительной.

Ну просто вершин не так уж и много для современных gpu пару лямов только, я вот сделал так чтобы нивидимые стороны моего меша не рисовались ну и фпс при анлит шейдере не такой уж и плохой при том что у меня 4к монитор с очень слабой для него gt 1030, кстати скачал майнкрафт и в нем у меня на фулскрине с 4к иногда фпс вообще дропается до 30 когда дождь то вообще 20 фпс, а среднем где-то 50-60 кстати мешы из майнкрафта довольно похожие на то что мне нужно. Вот ты скидывал какую-то статью где показывают как в майнкрафте квады мерджат вот только у меня есть сомнения в этом, как можно мерджить квады и при этом сохранять uv развертку, мне это вообще не очень понятно, uv вершин же не может быть больше чем простых я вот над этим сейчас голову ломаю, чет у меня есть подозрения что не фига там не мерджится, хотя раньше в 2011 я спокойно играл в майнкрафт на встройке от интела, сейчас там мой проект запустишь компьютер сгорит нафиг, конечно там прорисовка была намного меньше чем у меня, но все равно, пока у меня только есть идея чтобы сделать текстуры в 2 раза или может даже в 4 раз больше и тогда можно будет спокойно мерджить 4 квада в 1 или 16 в 1, но опять же сомнительная затея, чет никак не могу понять как эта uv развертка все таки работает. Да и прибавка то значительная, да и единственный минус у использования плагина его сохранять не удобно.
Последний раз редактировалось NAGIBATOR228pacan 16 апр 2019, 14:33, всего редактировалось 4 раз(а).
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Пред.След.

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

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

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