Здравствуйте, 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 расчетов.