Re[35]: C# - from indians by indians
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 08.06.15 14:22
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Здравствуйте, gandjustas, Вы писали:


EP>>>Тезис в цитате (с которым я полностью согласен) довольно прост — на C++ проще создать быстрый код. Ты же пытаешься передёрнуть в какую-то совершенно другую плоскость

G>>Плоскость та же самая. Просто ответь на вопрос насколько проще
EP>Намного проще.
Намного это насколько?

G>>и насколько нужна скорость с учетом всех факторов,

EP>Где-то нужна, а где-то нет
Где нужна?

G>>>>Для большинства проектов проценты прироста быстродействия

EP>>>Причём тут "проценты"?
EP>>>Выше как раз показано что при использовании Java-style это не проценты, а разы, и даже порядки.
G>>А при использовании C# не разы.
EP>В разы, бывает и на порядки
Я, слава богу, на java не пишу, а в .net проблем таких не наблюдал. Да и вырожденный во многом случай рассмотрен выше. Мне, например, за все время разработки на .NET понадобились структуры всего пару раз. Я уверен что ту же пару раз спокойно покрывает HotSpot.

G>>Кроме того операции с complex не такой уж частый случай. Я вот сомневаюсь что в том же ФБ много кода, работающего с вещественными числами.

EP>Повторюсь в N-ый раз Это бьёт далеко не только по арифметике и подобным вычислениям.
Ок, покажи другой пример, близкий к реальности, где нет арифметики с комплексными числами, матрицами итп.

G>>>>останутся незамеченными и дешевле будет сделать апгрейд железа, чем заниматься оптимизацией. Поэтому утверждение что "на C++ быстрый код получить на порядки проще" не имеет никакого смысла и верно только в контексте фейсбука\гугла и еще пары-тройки гигантов.

EP>>>Ты почему-то говоришь в контексте каких-то отдельных областей типа web'а — причём так, что как-будто ничего другого нет. Уж по верь "быстрый код на C++" нужен не только гигантам.
G>>Не видел ни одного случая, чтобы без C++ нельзя было добиться достаточного быстродействия.
EP>Опять 25. Без C++, на Java и C# можно добиться быстродействия, что не ясно-то? Ты с чем споришь?
С выделенным.

EP>>>Тебе попадаются задачи где не нужен? Поздравляю, вот только не надо необоснованно экстраполировать свой опыт на всю индустрию.

G>>Как раз ты пытаешься опыт ФБ экстраполировать на всю индустрию.
EP>Где я это пытаюсь делать?
В последних трех постах.

G>>Увы никто, из тех кто будет читать этот форум, даже близко не подойдет к таким масштабам.

EP>Да причём тут вообще масштабы? Есть много программ которые работают на устройствах конечных пользователей и где нужна скорость.
И там почему-то JavaScript, C#, Java и swift. У конечных пользователей скорость очень редко упирается в скорость вычислений.

EP>Ты же пытаешься всё свести к каким-то случаям типа веб-масштабирования. Не хватает только коронного "всё в базу упирается".

Нет, не пытаюсь.

G>>>>В остальных случаях сложность оптимизации на C++ и C# (и иногда Java) сравнимы, а учитывая в общем более высокую сложность разработки на C++ еще непонятно что будет проще в итоге.

EP>>>Нет, не сравнимы. В C++ я могу сделать много уровней абстракций, которые будут либо бесплатными, либо крайне дешёвыми. В C#, а тем более Java, так не получится. И вот за счёт этого получается проще.
G>>А не делать уровни абстракции не? Или ты считаешь, что это на порядок сложнее?

EP>Да, это на порядок сложнее. Например примеры из этого топика:

EP>Вместо того чтобы просто объявить класс Complex — будешь вручную нарезать массив double.
EP>Вместо того чтобы взять готовую ФВП transform, и передать в неё лямбду — будешь выписывать ручной for-цикл.
EP>И чем больше уровней, тем больше ad-hoc boilerplate, причём комбинаторно.
Но это, как мы выяснили уже, вырожденный пример. В реальности не встречающийся. В реальности количество боилерплйта на C++ оказывается не меньше, чем на java или C#.

EP>>>Мой поинт наоборот противоположный, и я уже устал его повторять:

EP>>>Предел оптимизации везде примерно одинаковый, разница в десятки процентов это не так уж серьёзно. Но на C++ этот предел гораздо проще достичь.
G>>На практике ровно наоборот.
EP>Почему это? Вот в этом топике и Java и C# показали скорость близкую к C++.
Потому что быстродействие программ вовсе не от быстродействия математики зависит.

G>>В C++ можно вовсе не выделять память под объекты, а в C#\Java без этого никак. В некоторых случаях только один этот факт позволяет из кода на C++ выжать в разы больше быстродействия. Правда затраты на такую оптимизацию очень быстро превышают разумные пределы.


EP>Ты как раз подтверждаешь мои слова выше. Ты читал на что отвечаешь?

EP>

EP>>>Предел оптимизации везде примерно одинаковый, разница в десятки процентов это не так уж серьёзно. Но на C++ этот предел гораздо проще достичь.
G>>На практике ровно наоборот.

Нет, ты говоришь о другом. Ты говоришь что на C++ проще получить быстрый код. Я говорю что на C++ в любом случае писать сложно, но код можно получить более быстрый, чем с другими языками.
И тогда встает вопрос оправданности использования C++ даже для performance-crtitical расчетов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.