Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C или C++ 
:(
    Опции темы
Olexey
Дата 18.10.2005, 20:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Не подскажете в чём разница между C i C++
И что лучше начинать учить(нечем большинство программ для венды);
Знаю Pascal и PHP

  Вверх
DeadSoul
Дата 18.10.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(Olexey @ 18.10.2005, 20:27)
И что лучше начинать учить(нечем большинство программ для венды);

С++


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Дмитрий Т
Дата 18.10.2005, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 16.3.2005
Где: Самара

Репутация: 4
Всего: 4



Сначала был C, потом появился C++ как его расширение, потом C обновили и он перестал быть просто частью C++.
Но по большей части C++ это C с дополнительными удобствами, так что учи сразу C++ - больше знать будешь smile
PM MAIL WWW ICQ Skype   Вверх
DeadSoul
Дата 18.10.2005, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата
Но по большей части C++ это C с дополнительными удобствами

ЭТО РАЗНЫЕ ЯЗЫКИ!


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
nikitao
Дата 18.10.2005, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Цитата
ЭТО РАЗНЫЕ ЯЗЫКИ!
ДОКОЖИ!
Добавлено @ 21:14
Первоночальное название С++ было "C с классами" делаем выводы во взаимоотношениях C и С++ smile


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Void
Дата 18.10.2005, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



С++ - прямой наследник C, но называть его расширением C едва ли возможно.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
SectoR
Дата 18.10.2005, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



С#
PM   Вверх
nikitao
Дата 18.10.2005, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



С++ - прямой наследник C, но называть его расширением C едва ли возможно.
Что мы вкладываем в это СЛОВО????????

Это сообщение отредактировал(а) nikitao - 18.10.2005, 21:35


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
Void
Дата 18.10.2005, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



nikitao
Язык, полученный из другого языка простым добавлением фич. C++, имхо, эту грань перешел (эдак к середине 90-х), хотя почти полная обратная совместимость с Си до сих пор обеспечивается (и зря...).


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
nikitao
Дата 18.10.2005, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Цитата
хотя почти полная обратная совместимость с Си до сих пор обеспечивается (и зря...).

Вот именно этот смысл лично я вкладываю в смысл слова "расширенный".

Цитата
(и зря...).

Why?


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
SectoR
Дата 18.10.2005, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Советую учить C#, т.к. платформа ".NET - наше светлое будующее"!
(цитата: А.Я. Архангельский <<Программирование в C++ Builder 6>>
2-е издание Бином 2005 стр. 36).

Это сообщение отредактировал(а) SectoR - 19.10.2005, 16:10
PM   Вверх
DeadSoul
Дата 18.10.2005, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



http://forum.sources.ru/index.php?showtopi...ndpost&p=750182
смотрим посты номер 14 и 23


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
val
Дата 19.10.2005, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Program developer
**


Профиль
Группа: Участник Клуба
Сообщений: 992
Регистрация: 14.1.2003
Где: г. Киев

Репутация: нет
Всего: 7



Последнее время С всё больше становится языком для программирования встроенных систем. Ну а С++ больше для персоналок. Но начинать, мне кажется все равно надо С, так как это подмножество С++.


--------------------
Терпимость - величайшее благо человечества...
Ярчайший признак интеллекта – постоянно хорошее настроение…
PM MAIL ICQ   Вверх
chipset
Дата 19.10.2005, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



А на вопрос так никто и не ответил smile
C++ -- обьектно-ориентированный язык, Си - процедурный.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Void
Дата 19.10.2005, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(chipset @ 19.10.2005, 19:28)
C++ -- обьектно-ориентированный язык

Мультипарадигменный (+ обобщенное программирование), если на то пошло. По крайней мере, Страуструп так утверждает smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
chipset
Дата 19.10.2005, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(Void @ 19.10.2005, 07:33)
обобщенное программирование

А что это, если не секрет? smile
Добавлено @ 17:36
Цитата(SectoR @ 18.10.2005, 12:01)
Советую учить C#, т.к. платформа ".NET - наше светлое будующее"!
(цитата: А.Я. Архангельский <<Программирование в C++ Builder 6>>
2-е издание Бином 2005 стр. 36).

Советую не оффтопить во избежание неминуемых последствий.
Спасибо.


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
Void
Дата 19.10.2005, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(chipset @ 19.10.2005, 19:34)
А что это, если не секрет?

Подход, благодаря которому мы имеем STL и много других вкусностей smile
http://en.wikipedia.org/wiki/Generic_programming
+ Why C++ isn't just an Object-Oriented Programming Language



--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
DeadSoul
Дата 19.10.2005, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(chipset @ 19.10.2005, 17:28)
А на вопрос так никто и не ответил
C++ -- обьектно-ориентированный язык, Си - процедурный.

А ты ходил по моей ссылке?
Добавлено @ 20:03
Цитата(chipset @ 19.10.2005, 17:34)
Цитата (Void @ 19.10.2005, 07:33)
обобщенное программирование
А что это, если не секрет? 

http://www.ozon.ru/context/detail/id/1224782/



--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
nikitao
Дата 19.10.2005, 20:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Цитата
C++ -- обьектно-ориентированный язык, Си - процедурный.

Ну если уж на то пошло,то еще и в названии,годе выхода(С++ позже),разработчиках smile


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
chipset
Дата 19.10.2005, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(Void @ 19.10.2005, 07:42)
Подход, благодаря которому мы имеем STL и много других вкусностей

О, теперь я знаю на одно умное слово больше, спасибо smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
yaja
Дата 19.10.2005, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 30.3.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Цитата(Void @ 19.10.2005, 17:42)
Подход, благодаря которому мы имеем STL и много других вкусностей smile

От таких вкусностей живот пучит...
Человек изучай С, а если потянет на ООП писать, то изучишь java, а не язык гибрид
PM MAIL   Вверх
DeadSoul
Дата 19.10.2005, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



yaja, может не надо религиозных войн? Каждый язык предназначен для своего и спорить о том, что круче бесполезно.



--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
nikitao
Дата 19.10.2005, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кот-программист
***


Профиль
Группа: Завсегдатай
Сообщений: 1206
Регистрация: 30.8.2005
Где: Спб

Репутация: 1
Всего: 26



Цитата
От таких вкусностей живот пучит...

Не нравится не ешь,они же сами в твой рот (програмный код) не полезут. smile


--------------------
Жизнь - печальная штука.
PM MAIL ICQ Skype GTalk   Вверх
yaja
Дата 19.10.2005, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 30.3.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 1



Цитата(DeadSoul @ 19.10.2005, 21:50)
yaja, может не надо религиозных войн? Каждый язык предназначен для своего и спорить о том, что круче бесполезно.

Бесспорно, только разве я говорил, что круче smile
Я просто посоветовал человеку, как поступить (имхо) лучше

Цитата(nikitao @ 19.10.2005, 21:53)
Не нравится не ешь,они же сами в твой рот (програмный код) не полезут.

Еще как лезут, особенно, когда начальство за спиной стоит smile

PM MAIL   Вверх
DeadSoul
Дата 20.10.2005, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(yaja @ 19.10.2005, 22:05)
Цитата (DeadSoul @ 19.10.2005, 21:50)
yaja, может не надо религиозных войн? Каждый язык предназначен для своего и спорить о том, что круче бесполезно.
Бесспорно, только разве я говорил, что круче 
Я просто посоветовал человеку, как поступить (имхо) лучше

В чем лучше?



--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Neitron
Дата 21.10.2005, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Лучше всего учить С++, а не СИ.
У С++ свой стиль программирования, и испоьзовать стиль из другого языка неприемлено.
Это ведет к неуклюжему и сложному коду.
С - является лишь подмножеством языка С++. С был лишь основой С++.
Но С++ действительно гибрид и других языков.
В нем соеденены Simula67, Algo68, Ada и др.

Это сообщение отредактировал(а) Neitron - 21.10.2005, 09:09


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
Neitron
Дата 21.10.2005, 09:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 580
Регистрация: 3.10.2005
Где: Москва

Репутация: 2
Всего: 5



Цитата(Void @ 18.10.2005, 21:39)
nikitao
Язык, полученный из другого языка простым добавлением фич. C++, имхо, эту грань перешел (эдак к середине 90-х), хотя почти полная обратная совместимость с Си до сих пор обеспечивается (и зря...).

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

Это сообщение отредактировал(а) Neitron - 21.10.2005, 09:39


--------------------
Хороший программист никогда ничего не делает хорошо с первого раза. Он понимает важность патчей.
Ⓘ ⓁⒾⓀⒺ ⓂⓄⓏⒾⓁⓁⒶ
PM MAIL   Вверх
szz
Дата 21.10.2005, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: нет
Всего: 33



Кароче. Надо разумеется взять книжку Кернигана и Ричи "Язык программирования Си" и проштудировать, сделать все задания оттуда.
А потом - С++. Я сам обожаю С++, но основы есть основы. Это - типа классический подход к изучению.

Важный момент: на сегодняшний день язык, который создает быстрый и компактный код (кроме, разумеется ассемблеров): Это Си. С++ ориентировочно в 8 раз медленее чем Си и генерит гораздо большие экзешники размерами.



--------------------
PM   Вверх
Void
Дата 21.10.2005, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(szz @ 21.10.2005, 20:09)
С++ ориентировочно в 8 раз медленее чем Си и генерит гораздо большие экзешники размерами.

Ну постеснялись хоть бы такой бред говорить...


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
DeadSoul
Дата 21.10.2005, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(szz @ 21.10.2005, 18:09)
Я сам обожаю С++, но основы есть основы

Абсолютно разные стили программирования.

Цитата(szz @ 21.10.2005, 18:09)
С++ ориентировочно в 8 раз медленее чем Си и генерит гораздо большие экзешники размерами.

В некоторых местах в 19 раз(stringstream vs printf) . Но это скорее исключение. Одна из целей Страуструпа была создать язык программирования по эффективности не уступающий Си(без плюсов)


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Void
Дата 21.10.2005, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(DeadSoul @ 21.10.2005, 22:11)
В некоторых местах в 19 раз(stringstream vs printf) . Но это скорее исключение.

Скорее, недоразумение авторов конкретной реализации STL smile Разницу больше, чем в 3 раза, мне получить не удалось. В большинстве случаев - вполне приемлемая плата за типобезопасность. Даже паталогически тормознутый boost::format проигрывает sprintf раз в 5-7.

P.S. Пока писал тестик на 20 строк, успел один раз получить AV из-за buffer overrun в sprintf. Нафиг ее, такую "скорость".


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
szz
Дата 21.10.2005, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: нет
Всего: 33



Цитата(Void @ 21.10.2005, 20:06)
Ну постеснялись хоть бы такой бред говорить...

Мусьё, вот вы и попались! Постеснялись бы стеснять smile Спросите любого программиста 3д игр, почему он пишет на Си а не С++?
Спросите разработчиков того же самого PHP - что, они ради своего удовольствия колупают на Сях? Ах как было бы удобно построить огроменную иерархию классов для парсера PHP! А вот низя )))
Число 8 не с потолка взято, позвольте заметить.

Цитата(DeadSoul @ 21.10.2005, 20:11)
В некоторых местах в 19 раз(stringstream vs printf)

С++ные потоки - вообще уже притчей во язытцах давным-давно стали smile Я говорю даже просто об использовании классов.


Ну все ладно, хватит пустословить. Человек получил ответ на свой вопрос,
Цитата(Void @ 21.10.2005, 20:43)
Пока писал тестик на 20 строк, успел один раз получить AV из-за buffer overrun в sprintf. Нафиг ее, такую "скорость".

Это ручки ))) нечего sprintf ругать

Забавные результаты. Одно включение iostream (супротив stdio.h) должно все на уши поставить.
Как, кстати, тестируем? Чем считаем-с?


--------------------
PM   Вверх
Void
Дата 21.10.2005, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(szz @ 21.10.2005, 23:25)
Мусьё, вот вы и попались! Постеснялись бы стеснять smile Спросите любого программиста 3д игр, почему он пишет на Си а не С++?

А парни из Remedy не знали, и облажалась, выпустив Max Payne 2, написанный на C++... и движок почему-то летает. Или gamedev == Кармак? smile Ну так вроде и он потихоньку на плюсы переходит.
Цитата(szz @ 21.10.2005, 23:25)
Спросите разработчиков того же самого PHP - что, они ради своего удовольствия колупают на Сях? Ах как было бы удобно построить огроменную иерархию классов для парсера PHP! А вот низя )))

Да кто их знает smile У таких больших и древних проектов свои тараканы.
Цитата(szz @ 21.10.2005, 23:25)
Число 8 не с потолка взято, позвольте заметить.

Ну, выкладывайте свой секрет бенчмаркинга smile
Цитата(szz @ 21.10.2005, 23:25)
Я говорю даже просто об использовании классов.

smile Оверхед от косвенности в виртуальных вызовах считать будем?
Цитата(szz @ 21.10.2005, 23:25)
Это ручки ))) нечего sprintf ругать

Ну не смог я с первого раза правильно посчитать в уме необходимый размер буфера. Позор мне за это.
Цитата(szz @ 21.10.2005, 23:25)
Забавные результаты. Одно включение iostream (супротив stdio.h) должно все на уши поставить.

Как?! smile
Цитата(szz @ 21.10.2005, 23:25)
Как, кстати, тестируем? Чем считаем-с?

clock'ом, однако smile
Код
for (int i = 0; i < 1000000; ++i)
    p += sprintf(p, "%i = %lf\n", i, static_cast<double>(i));

vs аналоги.

P. S. Тема отчетливо запахла Религиозными войнами...


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
S.A.P.
Дата 21.10.2005, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(Void @ 21.10.2005, 21:48)
vs аналоги.

а какие еще аналоги?
Код

ostringstream out;
for (int i = 0; i < 1000000; ++i)
       out << i << " = " << static_cast<double>(i) << endl;


дык STL проиграет заведомо smile .
PM MAIL   Вверх
Void
Дата 21.10.2005, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(Perchilla @ 22.10.2005, 00:09)
а какие еще аналоги?

std::ostringstream и boost::format

Цитата(Perchilla @ 22.10.2005, 00:09)
дык STL проиграет заведомо

Проиграла. В 3 раза. А не в 8-19, как утверждают smile Про AV см. выше.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
S.A.P.
Дата 21.10.2005, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Void а как тестировал? В случае со sprintf всё в С строку загонял или в string ?
PM MAIL   Вверх
Void
Дата 21.10.2005, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(Perchilla @ 22.10.2005, 00:16)
В случае со sprintf всё в С строку загонял или в string ?

А второй вариант... это как вообще? smile В C-строку, конечно. В общем, смотрите сами:
Код
#include <iostream>
#include <sstream>
#include <cstdio>
#include <ctime>

#include <boost/format.hpp>

using namespace std;

int main() {
    ostringstream os;
    clock_t t0 = clock();
    for (int i = 0; i < 1000000; ++i)
        os << i << " = " << static_cast<double>(i) << "\n";
    cout << "ostringstream: " << 1000.0 * (clock() - t0) / CLOCKS_PER_SEC <<
        " ms\n";
    t0 = clock();
    char *s = new char[24000000], *p = s;
    for (int i = 0; i < 1000000; ++i)
        p += sprintf(p, "%i = %lf\n", i, static_cast<double>(i));
    cout << "sprintf: " << 1000.0 * (clock() - t0) / CLOCKS_PER_SEC <<
        " ms\n";
    delete s;
    os.str("");
    t0 = clock();
    boost::format fmt("%1% = %2%\n");
    for (int i = 0; i < 1000000; ++i)
        os << fmt % i % static_cast<double>(i);
    cout << "boost::format: " << 1000.0 * (clock() - t0) / CLOCKS_PER_SEC <<
        " ms\n";
}

Цитата
ostringstream: 7721 ms
sprintf: 3485 ms
boost::format: 15923 ms


Это сообщение отредактировал(а) Void - 21.10.2005, 22:21


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
S.A.P.
Дата 21.10.2005, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Void дык понятное дело, ostringstream string использует, ему расширяться надо каждый раз, а под C строки тут сразу память выделяется .
Добавлено @ 22:38
А у меня вобще интересные тесты:
Цитата

ostringstream: 3953 ms
sprintf: 3094 ms

PM MAIL   Вверх
Void
Дата 21.10.2005, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Perchilla
Переделал, посмотрел. Прирост на пару процентов. Реаллокация - не самое узкое место. Потоки действительно медленнее, но, повторюсь, эта медленность в большинстве случаев оправдывается (типо)безопасностью.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
S.A.P.
Дата 21.10.2005, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата

ostringstream: 3953 ms
sprintf: 3094 ms

это я на VC 71 компилил

а mingw вобще ужас на крыльях ночи выдает

Цитата

ostringstream: 11500 ms
sprintf: 3156 ms

PM MAIL   Вверх
Void
Дата 21.10.2005, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



STLPort, небось? smile


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
S.A.P.
Дата 21.10.2005, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(Void @ 21.10.2005, 22:46)
STLPort, небось?

нет, все по старинке smile .
PM MAIL   Вверх
DeadSoul
Дата 21.10.2005, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



[quote=szz, 21.10.2005, 21:25]Цитата (DeadSoul @ 21.10.2005, 20:11)
В некоторых местах в 19 раз(stringstream vs printf)
Обшибся... В 9 раз для MS VC 7. В 19.2 - это boost::lexical_cast
Источник: Саттер,Новые сложные задачи на С++

[quote=szz, 21.10.2005, 21:25]Цитата (Void @ 21.10.2005, 20:43)
Пока писал тестик на 20 строк, успел один раз получить AV из-за buffer overrun в sprintf. Нафиг ее, такую "скорость".
Это ручки ))) нечего sprintf ругать[/quote]
Это означаят, что я как параноик должен проверять каждый символ.



--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
S.A.P.
Дата 21.10.2005, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 9
Всего: 71



Цитата(DeadSoul @ 21.10.2005, 23:00)
Обшибся... В 9 раз для MS VC 7. В 19.2 - это boost::lexical_cast
на результаты смотрел? smile . У меня на VC 71 у sprintf прирост скорости не больше 30 процентов, ни о каких разах и речи нет. smile .

А boost::format в mingw 20625 ms работал smile

Это сообщение отредактировал(а) Perchilla - 21.10.2005, 23:33
PM MAIL   Вверх
DeadSoul
Дата 22.10.2005, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(Perchilla @ 21.10.2005, 23:04)
на результаты смотрел?


Perchilla, самому прогонять тескты слишком сложно. Современные компиляторы слишком хорошо оптимизируют. И у тебя стоит двойная цель:
- оставить компилятору возможность для оптимизациии
- убить ненужную оптитмизацию. ПРимер:
Код

for ( int i=0 ; i<1000000 ; ++i );

компилер может выкинуть


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
Void
Дата 23.10.2005, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 40
Всего: 173



Цитата(DeadSoul @ 23.10.2005, 01:16)
Современные компиляторы слишком хорошо оптимизируют

Это недостаток? smile
Цитата(DeadSoul @ 23.10.2005, 01:16)
убить ненужную оптитмизацию. ПРимер:

Почему же ненужную? Зачем может быть нужен пустой цикл на миллион итераций? В качестве задержки? Так есть способы получше. Вспоминается CRT от древнего TP 7.0, в которой задержки делались именно пустыми циклами, с калибровкой при старте. Прошло время, процессоры стали быстрее, и все это стало нещадно глючить.


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Mayk
Дата 23.10.2005, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Void @ 22.10.2005, 00:43)
P.S. Пока писал тестик на 20 строк, успел один раз получить AV из-за buffer overrun в sprintf. Нафиг ее, такую "скорость".

Не будем столь категоричными. Ведь есть же snprintf! smile

Цитата(DeadSoul @ 22.10.2005, 03:00)
Источник: Саттер,Новые сложные задачи на С++

Для сравнения некий дядя Майерс говорил о 20%-200% потерях скорости при использоваии иостреам на разных конфигурациях.
При этом он допускал возможность написания вывода столь же быстрого как и сам stdio.
(смотреть наиболее эффективное программирование, правило 34 по-моему - "юзайте разные либы")


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
DeadSoul
Дата 23.10.2005, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



Цитата(Void @ 23.10.2005, 09:26)
Цитата (DeadSoul @ 23.10.2005, 01:16)
Современные компиляторы слишком хорошо оптимизируют
Это недостаток?
Цитата (DeadSoul @ 23.10.2005, 01:16)
убить ненужную оптитмизацию. ПРимер:
Почему же ненужную? Зачем может быть нужен пустой цикл на миллион итераций? В качестве задержки? Так есть способы получше

Все это было к тому, что крайне сложно сделать грамотную оченку по скорости


--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
powerfox
  Дата 23.10.2005, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 97



Цитата(SectoR @ 18.10.2005, 22:01)
Советую учить C#, т.к. платформа ".NET - наше светлое будующее"!
(цитата: А.Я. Архангельский <<Программирование в C++ Builder 6>>
2-е издание Бином 2005 стр. 36).

Архангельский - плохой автор!


--------------------
user posted image
PM WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0979 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.