Некоторые говорят что код на С работает быстрее чем C++. Т. е. для разработки высокопроизводительного SW предпочтительно использовать С вместо C++. Кто нибудь может подсказать в чем это преимущество (не считая использование виртуальных функции, здесь очевидно почему медленее)
24.02.10 15:44: Перенесено модератором из 'C/C++' — Кодт
Здравствуйте, Аноним, Вы писали:
А>Некоторые говорят что код на С работает быстрее чем C++. Т. е. для разработки высокопроизводительного SW предпочтительно использовать С вместо C++. Кто нибудь может подсказать в чем это преимущество (не считая использование виртуальных функции, здесь очевидно почему медленее)
Troll detected!
По самому вопросу: Если есть нормальный С++ компилятор, то преимуществ у чистого С нет. За деталями — в поиск.
Здравствуйте, Аноним, Вы писали:
А>Некоторые говорят что код на С работает быстрее чем C++. Т. е. для разработки высокопроизводительного SW предпочтительно использовать С вместо C++. Кто нибудь может подсказать в чем это преимущество (не считая использование виртуальных функции, здесь очевидно почему медленее)
C++ почти полностью совместим с C, поэтому программы на C, как правило, можно просто скомпилировать компилятором C++ и получить такой же результат, не быстрее и не медленнее. C++ сам по себе не вносит никаких тормозов, это же zero overhead language. И нельзя говорить, что виртуальные функции замедляют программу, потому что для реализации того же средствами C пришлось бы самому реализовывать полиморфизм каким-нибудь другим способом. То же относится к RTTI и исключениям (кстати, последние могут быть даже быстрее кодов возврата, потому что они могут быть реализованы как переход прямо к обработчику, минуя длинную цепочку условных переходов типа if(status < 0) return -ESOMETHING).
Зато C++ может быть быстрее C. Например, std::sort быстрее qsort за счет того, что встраивает операцию сравнения, а не вызывает функцию по указателю.
Здравствуйте, IID, Вы писали:
IID>Здравствуйте, Аноним, Вы писали:
А>>Некоторые говорят что код на С работает быстрее чем C++. Т. е. для разработки высокопроизводительного SW предпочтительно использовать С вместо C++. Кто нибудь может подсказать в чем это преимущество (не считая использование виртуальных функции, здесь очевидно почему медленее)
IID>Troll detected!
IID>По самому вопросу: Если есть нормальный С++ компилятор, то преимуществ у чистого С нет. За деталями — в поиск.
На уровне двоичных кодов отличаются отличаются программы скомпилинные C и С++ компиляторами?
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, Аноним, Вы писали:
А>>Некоторые говорят что код на С работает быстрее чем C++. Т. е. для разработки высокопроизводительного SW предпочтительно использовать С вместо C++. Кто нибудь может подсказать в чем это преимущество (не считая использование виртуальных функции, здесь очевидно почему медленее)
RO>C++ почти полностью совместим с C, поэтому программы на C, как правило, можно просто скомпилировать компилятором C++ и получить такой же результат, не быстрее и не медленнее. C++ сам по себе не вносит никаких тормозов, это же zero overhead language. И нельзя говорить, что виртуальные функции замедляют программу, потому что для реализации того же средствами C пришлось бы самому реализовывать полиморфизм каким-нибудь другим способом. То же относится к RTTI и исключениям (кстати, последние могут быть даже быстрее кодов возврата, потому что они могут быть реализованы как переход прямо к обработчику, минуя длинную цепочку условных переходов типа if(status < 0) return -ESOMETHING).
Если позанудствовать, то можно упомянуть, что на некоторых компиляторах возможен незначительный overhead из-за включенной обработки исключений. Т.е. при прочих равных код на С будет скомпилирован в меньший по размеру бинарь. Скорость исполнения будет отличаться, скорее всего, весьма и весьма незначительно.
Если выключить исключения и rtti — разницы скорее всего не будет (для g++ 3.4.x) это проверено
Здравствуйте, IID, Вы писали: IID>Если есть нормальный С++ компилятор, то преимуществ у чистого С нет. За деталями — в поиск.
А поиск с тобой как-то не очень-то согласен: http://www.rsdn.ru/forum/decl/3680439.aspx
Здравствуйте, Mr.Cat, Вы писали:
IID>>Если есть нормальный С++ компилятор, то преимуществ у чистого С нет. За деталями — в поиск. MC>А поиск с тобой как-то не очень-то согласен: http://www.rsdn.ru/forum/decl/3680439.aspx
Завязался нудный спор, в котором часто упоминались Lisp, Nemerle и ключ от квартиры, где деньги лежат, а C как-то обойден вниманием. В статье-то автор ругает некоторые особенности C++, которых в C нет, что никак не отвечает на исходный вопрос.
Здравствуйте, Mr.Cat, Вы писали:
MC>Здравствуйте, IID, Вы писали: IID>>Если есть нормальный С++ компилятор, то преимуществ у чистого С нет. За деталями — в поиск. MC>А поиск с тобой как-то не очень-то согласен: http://www.rsdn.ru/forum/decl/3680439.aspx
Здравствуйте, Roman Odaisky, Вы писали: RO>Завязался нудный спор, в котором часто упоминались Lisp, Nemerle и ключ от квартиры, где деньги лежат, а C как-то обойден вниманием. В статье-то автор ругает некоторые особенности C++, которых в C нет, что никак не отвечает на исходный вопрос.
Ненене, все как раз в тему. По ссылкам — обсуждение иного, нежели в C++, подхода к решению проблем C. А поскольку красивые подходы всегда универсальны, то обсуждение немного отошло от непосредственно C. Какбы иллюстрация того, что C++ не нужен.
Здравствуйте, IID, Вы писали: IID>Ну и ? Вброс очередного Си-фага.
Да не, не надо так злиться. Просто человек высказывает свое мнение насчет того, почему C++ не нужен. Кто-то согласен, кто-то нет, кому-то пофиг.
Здравствуйте, Mr.Cat, Вы писали:
RO>>Завязался нудный спор, в котором часто упоминались Lisp, Nemerle и ключ от квартиры, где деньги лежат, а C как-то обойден вниманием. В статье-то автор ругает некоторые особенности C++, которых в C нет, что никак не отвечает на исходный вопрос. MC>Ненене, все как раз в тему. По ссылкам — обсуждение иного, нежели в C++, подхода к решению проблем C. А поскольку красивые подходы всегда универсальны, то обсуждение немного отошло от непосредственно C. Как бы иллюстрация того, что C++ не нужен.
C++ нужен. Это единственный высокоуровневый язык с нулевым оверхедом.
Здравствуйте, Roman Odaisky, Вы писали: RO>C++ ... высокоуровневый язык с нулевым оверхедом...
... на использование низкоуровневого подхода.
Хотя "не платишь за то, что не используешь" — тоже полезное свойство, конечно.
Здравствуйте, Mr.Cat, Вы писали:
IID>>Преимуществ у чистого Си нету и точка. MC>Просто человек высказывает свое мнение насчет того, почему C++ не нужен.
Так это же совсем разные вещи — сравнение C с C++ и C++ со всем остальным.
Здравствуйте, IID, Вы писали:
IID>Вброс очередного Си-фага.
Что же ты везде видишь злобных троллей? Бедного анонима ввели в заблуждение какие-то таинственные некоторые, он пошел на форум выяснить, так ли обстоит дело, а мы тут сами стали флеймить о чём-то не относящемся к делу, вплоть до Lisp vs Nemerle. Даже тему перенесли в КСВ, где многострадальный аноним ее и не найдет! Не надо сидеть так много под мостом, и зеленые тролли не будут чудиться на каждом шагу!
По-моему, больше вреда наносят не сами тролли, они и встречаются не так часто, а те, кто усматривает их зеленые лапы в каждом втором сообщении.
Здравствуйте, Roman Odaisky, Вы писали: RO>Так это же совсем разные вещи — сравнение C с C++ и C++ со всем остальным.
Ага. Поэтому надо все-таки определиться, что мы тут будем обсуждать: "C as is или C++ as is" или "боремся с трудностями C: C++ или что-то другое?".
Здравствуйте, Аноним, Вы писали:
А>Некоторые говорят что код на С работает быстрее чем C++. Т. е. для разработки высокопроизводительного SW предпочтительно использовать С вместо C++. Кто нибудь может подсказать в чем это преимущество (не считая использование виртуальных функции, здесь очевидно почему медленее)
Врут. Единственное преимущество С над C++ заключается в том, что код на C проще читать, писать и понимать (на C, на C, а не оговорился)
Здравствуйте, Pzz, Вы писали:
Pzz>Врут. Единственное преимущество С над C++ заключается в том, что код на C проще читать, писать и понимать (на C, на C, а не оговорился)
Смотря как писать на C++. Во-первых, на C++ можно писать точно так же, как на C. Во-вторых, писать можно тоже по-разному:
Здравствуйте, Mr.Cat, Вы писали:
RO>>Так это же совсем разные вещи — сравнение C с C++ и C++ со всем остальным. MC>Ага. Поэтому надо все-таки определиться, что мы тут будем обсуждать: "C as is или C++ as is" или "боремся с трудностями C: C++ или что-то другое?".
Ни то, ни другое. Аноним вообще не ставил вопрос, что лучше. Он просто хотел выяснить, правда ли, что некая характеристика более свойственна C, чем C++.
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, Pzz, Вы писали:
Pzz>>Врут. Единственное преимущество С над C++ заключается в том, что код на C проще читать, писать и понимать (на C, на C, а не оговорился)
RO>Смотря как писать на C++. Во-первых, на C++ можно писать точно так же, как на C. Во-вторых, писать можно тоже по-разному:
Это как наркотик. Начинаешь с небольшой дозы чистого героина в хорошей компании, чтобы расслабиться и повеселиться, а кончаешь тем, что лежа в канаве вмазываешь себе какую-то бурду, купленную на последние, украденные у собственного ребенка, деньги
Трудно остановиться, и еще труднее объяснить другим членам команды, в каком именно месте надо останавливаться. Плюс, появление в проекте 3rd party библиотек, написанных на "хорошем" C++ (том, который без поллитра не поймешь), тоже сдвигает границы.