Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » хочу начать учить с++

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5

Открыть новую тему     Написать ответ в эту тему

Ryback

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bloody_Nokia_Adept

Цитата:
позволяет спокойно передавать данные из exe в dll и обратно

фантастика
 
Добавлено
mymuss

Цитата:
Стоит! По меньшей мере первую.

я имел в виду сравнение MySQL/msql

Всего записей: 56 | Зарегистр. 22-05-2003 | Отправлено: 13:08 27-05-2003
Bloody_Nokia_Adept



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mymuss

Цитата:
MySQL наступает на пятки Ораклу(!)

Это выходит за рамки темы, но все же... Далековато еще до пяток оракла
Нет:
1. триггеров
2. хранимых процедур
3. сравнимой масштабируемости
4. отказоустойчивости
 
Часть из перечисленного появится в версии 5, но как это будет реализовано еще не известно. Вот... Я сам АБД и работаю с Oracle9i и MS SQL 2000. Дома разворачивал MySQL 4 - смотрл сравнивал. Есть вещи более удобные, но далеко ему еще до оракла.
 
Если ставить базу не корпоративного уровня, то MySQL потянет

Всего записей: 785 | Зарегистр. 27-11-2002 | Отправлено: 13:12 27-05-2003
Ryback

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bloody_Nokia_Adept

Цитата:
Разумеется нет - если это кем-то было создано ранее и нормально себя зарекомендовало, то стоит использовать

ты не понял. этих сервисов нет у omniorb. а они тебе нужны. вот и прийдется выбирать что-то другое. например orbit.

Всего записей: 56 | Зарегистр. 22-05-2003 | Отправлено: 13:13 27-05-2003
mymuss



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Bloody_Nokia_Adept

Цитата:
Нет:  
1. триггеров  
2. хранимых процедур
 

Кажется, уже в 4.1 будут. Вместе с сабселектами.
 

Цитата:
 
3. сравнимой масштабируемости  
4. отказоустойчивости  

Это почему же?
 

Цитата:
Есть вещи более удобные, но далеко ему еще до оракла.

Но цена! Цена!!! Да и я в общем-то имелл в виду большу производительность


----------
(a + b^n) / n = x, donc Dieu existe; répondez !
Euler

Всего записей: 709 | Зарегистр. 13-04-2003 | Отправлено: 13:17 27-05-2003
Ryback

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Bloody_Nokia_Adept

Цитата:
4. отказоустойчивости  

Ну, зачем нужна она ораклу - понятно - по крайней мере, mysql-4.1-alpha ( _alpha_ !) не падает от запросов

Код:
 
SELECT TO_TIMESTAMP_TZ('2003-02-016 12:00:00 -8:00','- some long string -') FROM DUAL;
 

 
Да и знаешь, в нашем родном Харькове, практикуют неожиданное отключение электропитания, так вот еще ни разу не было потерь данных на mysql-3.22.32, при то, что нагрузка у него достаточная.
 
 
Добавлено
mymuss

Цитата:
Кажется, уже в 4.1 будут. Вместе с сабселектами.  

 
нет, они будут в 5.0, а 4.1 уже вышел. с сабселектами и новыми интересными расширениями.

Всего записей: 56 | Зарегистр. 22-05-2003 | Отправлено: 13:21 27-05-2003
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
klau
mymuss
Я попробовал .NET, мне понравилось. Одно большое НО. Если программировать на нем - лучше использовать C#. На С++ этот процесс содержит избыточное количество геморроя. Кроме того мне все еще диковато, что динамически объект создаю, а удалять его не надо - сам исчезнет.
А в целом очень занятная печенюшка. Существенно удобнее чем MFC etc.

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 13:32 27-05-2003
dremon



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mymuss

Цитата:
Аргументы в студию!  
ПМСМ, надо начинать как раз с stdio, stdlib ну и вообще с того, что в *никсах я называю libc  

Ты тогда выучишь язык C. И будешь писать программы на C++ в стиле C - в функциональном стиле. Методика, которая хороша для написания дров и кернела, для прикладного программирования и тем более для обучения не очень подходит.
 
У C++ есть стандартная библиотека, совершенно независимая от LIBC. Она называется STL и iostreams. stdio и LIBC - это стандартные библиотеки языка C.
 
Добавлено
Ryback

Цитата:
Вот пример кода, который имеет как пробемы с потоками так и со скоростью:  
Код:  
cout<<1<<2<<3<<4<<endl;  
а вот пример который быстрее и не требует синхронизации в многопоточном приложении:  
Код:  
fprintf(stdout, "%d%d%d%d\n", 1, 2, 3, 4);  
 

Неудачные примеры.
Вопрос быстродействия здесь настолько спорен, что его даже рассматривать не стоит. Про потоки я уже говорил. Хочешь, чтобы все работало - используй объекты синхронизации для доступа к общим данным.
 
Вот тебе другой пример:
 
char buf[255];
scanf("%s", buf);
 
и второй вариант:
std::string buf;
std::cin >> buf;
 
Еще пример (с ошибкой):
char *buf = "Hello, world!";
printf("%s", &buf); // из-за лишнего & программа даст runtime ошибку.
 
string buf = "Hello, world!";
std::cout << buf; // ошибиться просто невозможно.
 
какой из них нагляднее для чтения, безопаснее и понятнее?
Вообще использование переменного числа параметров - это очень опасная вещь. Забудешь в спецификации к printf/scanf поставить значок % (или что-нибудь типа этого) - и все, большие шансы что твое приложение накроется. Ищи потом ошибку.

Всего записей: 961 | Зарегистр. 21-08-2001 | Отправлено: 14:42 27-05-2003 | Исправлено: dremon, 15:02 27-05-2003
Ryback

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dremon

Цитата:
Неудачные примеры.
Вопрос быстродействия здесь настолько спорен, что его даже рассматривать не стоит.  

Почему же, стоит. Сколько вызовов функций происходит в первом примере? А во втором? Или мы быстродейсвие на глаз оцениваем?
 

Цитата:
Вот тебе другой пример:
 
char buf[255];
scanf("%s", buf);
 

Стоп, писать программы с ошибками и приводить их в качестве примера???
scanf("%254s", buf);
 

Цитата:
Еще пример (с ошибкой):
char *buf = "Hello, world!";
printf("%s", &buf); // из-за лишнего & программа даст runtime ошибку.  

 
вывод моего компилятора:
 

Цитата:
 
/home/voodoo/test.cc: In function `int main()':
/home/voodoo/test.cc:6: warning: char format, pointer arg (arg 2)
 

 
Уважаемый, кто вам доктор, что вы не можете правильно пользовать stdio? Если вы забывете ставить проценты или лепите лишний &, то ошибки будут  в программе на любом языке.

Всего записей: 56 | Зарегистр. 22-05-2003 | Отправлено: 15:09 27-05-2003
Bloody_Nokia_Adept



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ryback

Цитата:
вывод моего компилятора

Как оказалось VC++ не делает таких проверок
 
dremon

Цитата:
char buf[255];  
scanf("%s", buf);

Действительно, зачем провоцировать переполнение буфера?
Согласен с тем, что stl в данном случае удобнее - все проверки перекладываем на него.

Всего записей: 785 | Зарегистр. 27-11-2002 | Отправлено: 15:20 27-05-2003
klau

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mickey_from_nsk
mymuss
 
Да, но использовать его только для c# не очень выгодно. Получается что продукт работает на 20% своей мощности. Скажем, скоро появится с++билдер с поддержкой для с# - если нужно только с шарп, то можно его т.к. легче.
В НЕТе воде как можно создать универсальные приложения (часть на шарпе, часть на джаве, часть на с++) и это должно работать. Не говорю о том, что этот список возможных частей будет расширяться.

Всего записей: 159 | Зарегистр. 25-10-2002 | Отправлено: 15:29 27-05-2003
dremon



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Сколько вызовов функций происходит в первом примере? А во втором? Или мы быстродейсвие на глаз оцениваем?

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

Цитата:
Стоп, писать программы с ошибками и приводить их в качестве примера???  

Мы говорим о надежности и безопасности. Ошибки времени выполнения имеют к этой теме прямое отношение. Ипользуя iostreams, ты таких ошибок случайно не сделаешь.
 

Цитата:
вывод моего компилятора:

Вот блин, далась тебе эта stdio-библиотека!
Ну хорошо - замени строку "%s" на strFormatSpec, а эту переменную инициализируй в другом модуле.
Посмотрим, что скажет твой компилятор. Вообще на его сообщения полагаются только новички и писать программу не думая, надеясь что умный компилятор обо всем предупредит - это уровень детского сада.
 
Добавлено
Ryback, здесь вообще разговор идет о C++, а не о C и stdio. А то уже в соседней теме один человек посоветовал инициализировать массив объектов вызовом memset, тоже упирая на быстродействие.
Еще раз скажу - LIBC имеет отношение к C++ не более, чем MFC или ATL. Читайте стандарт языка и не давайте глупых советов.
 

Всего записей: 961 | Зарегистр. 21-08-2001 | Отправлено: 16:09 27-05-2003 | Исправлено: dremon, 16:22 27-05-2003
Ryback

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dremon

Цитата:
Кто же это оценивает быстродействие по количеству вызываемых функций?  

в случае если есть функция, которая записывет один символ и вызывается 5 раз и есть функция, записывающая 5 символов сразу. одинаковым способом. что быстрее? мы же не сравниваем fork() и puts(), мы сравниваем одинаковые по выполняемым действиям вещи.
 

Цитата:
Я могу написать программу, в которой вообще не будет ни одной функции, но которая будет очень сильно тормозит

и не сомневаюсь
 

Цитата:
Мы говорим о надежности и безопасности. Ошибки времени выполнения имеют к этой теме прямое отношение.  

то есть ты можешь забыть как передавать в printf строку, но не забыть облепить критическими секциями/мутексами  std::<<cout<<.... заботясь о том чтобы каждая строка в программе выполнялась на одном потоке, таким образом создавая шедевры прграммирования?
монстр.
 
в догонку.

Код:
 
std::string buf = "Hello, world!";
std::cout << &buf << endl;
 


Цитата:
Ошибиться просто невозможно.

Этот код делает то, что ты хотел от него?
 

Цитата:
... писать программу не думая...  

Это про твои примеры. И только про них.

Цитата:
Вообще на его сообщения полагаются только новички

Точно, профессионалы, наверное в таком случае потом свои программы не запускают?
Нет, профессионалы всегда обращают внимание на предупреждения компилятора. Потому, что они люди. И тоже делают опечатки, забывают инициализировать переменные и т.д.
 
 
 
Добавлено
dremon

Цитата:
Читайте стандарт языка и не давайте глупых советов.  

Сер, только после вас. Не пишите глупых примеров.

Всего записей: 56 | Зарегистр. 22-05-2003 | Отправлено: 16:36 27-05-2003
dremon



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ryback, ты мыслишь слишком прямолинейно и поверхностно. Функция fprintf, которую ты так любишь, в итоге 5 раз вызовет процедуру печати целого числа. И плюс ко всему еще потратит время на разбор шаблона. Изучил бы вопрос, прежде чем спорить. Какой-то бред городишь.  И вообще, это вопрос реализации конкретной библиотеки на конкретной платформе.

Цитата:
то есть ты можешь забыть как передавать в printf строку, но не забыть облепить критическими секциями/мутексами  std::<<cout<<.... заботясь о том чтобы каждая строка в программе выполнялась на одном потоке, таким образом создавая шедевры прграммирования?

Это вообще без комментариев.

Цитата:
Этот код делает то, что ты хотел от него?

Этот код не вызовет сбой в работе программы, а напечатает точно то, что ты хочешь напечатать - адрес переменной buf. В случае stdio ты хочешь сделать одно, а делаешь другое. Почувствуй разницу.

Цитата:
Нет, профессионалы всегда обращают внимание на предупреждения компилятора. Потому, что они люди. И тоже делают опечатки, забывают инициализировать переменные и т.д.

Я тебе про Фому, а ты мне про Ерему. Обращай внимание на сообщения компилятора, они для этого и нужны. но я тебе уже привел пример, когда твой любимый gcc тихо промолчал. Профессионалы не делают глупых ошибок. На то они и профессионалы с опытом работы.
 
 
Добавлено
Ryback, ты почему-то упорно стараешься доказать, что бесконтрольность и слабая типизация C-стиля лучше, чем сильная типизация C++-стиля, приводя в качестве аргумента высосанную из пальца производительность функции fprintf и непонятные фразы про многопоточные проблемы в библиотеке iostream. Это выглядит просто нелепо и заставляет усомниться в квалификации. Поэтому спорить с тобой я больше не буду.

Всего записей: 961 | Зарегистр. 21-08-2001 | Отправлено: 17:22 27-05-2003 | Исправлено: dremon, 17:31 27-05-2003
Ryback

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dremon

Цитата:
Функция fprintf, которую ты так любишь, в итоге 5 раз вызовет процедуру печати целого числа. И плюс ко всему еще потратит время на разбор шаблона. Изучил бы вопрос, прежде чем спорить. Какой-то бред городишь.  И вообще, это вопрос реализации конкретной библиотеки на конкретной платформе.  

брррр. Ты что, считать не умеешь? В случае с iostream ты пять раз вызовешь operator<<, который пять раз вызовет функцию печати целого числа. Короче, напиши тест  и сравни.  Я сравнил, прежде чем постить.
 

Цитата:
Это вообще без комментариев.  

почему же? Я что-то не так написал? Ты  сам писал мне про то, что надо пользоваться обьектами синхронизации.  Или ты не знаешь к чему приводит их чрезмерное употребление?
 

Цитата:
Этот код не вызовет сбой в работе программы, а напечатает точно то, что ты хочешь напечатать - адрес  
переменной buf. В случае stdio ты хочешь сделать одно, а делаешь другое. Почувствуй разницу.  

Да, этот код не вызовет сбоя в программе. Абсолютно верно. Но я тебя прошу, все же пиши ответы, памятуя, что сам писал раньше. Ты писал про то, что поставишь лишний & - значит, в С++ он у тебя не лишний, и ты хочешь вывести адрес, а в С ты хотел вывести строку. Ближе к телу, сударь.
 

Цитата:
Профессионалы не делают глупых ошибок. На то они и профессионалы с опытом работы.  

ой. а что же тогда было в твоих примерах, как не глупые ошибки?
 
Ладно. Постараемся подвести итоги.
1. stdio быстрее
2. stdio надежнее с точки зрения многопоточных программ
3. stdio чревато глупыми ошибками
4. использование iostream  в большой программе только загромождает код
 
 
 
 
 
Добавлено
dremon
 

Цитата:
Ryback, ты почему-то упорно стараешься доказать, что бесконтрольность и слабая типизация C-стиля лучше, чем сильная типизация C++-стиля, приводя в качестве аргумента высосанную из пальца производительность функции fprintf и непонятные фразы про многопоточные проблемы в библиотеке iostream. Это выглядит просто нелепо и заставляет усомниться в квалификации. Поэтому спорить с тобой я больше не буду.

 
Да уж, хватит. Последней фразой ты лишь подтвердил не знание реализаций C stream library и С++ iostreams,  в том числе и в многопоточных приложениях.
 

Всего записей: 56 | Зарегистр. 22-05-2003 | Отправлено: 17:42 27-05-2003
dremon



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
брррр. Ты что, считать не умеешь? В случае с iostream ты пять раз вызовешь operator<<, который пять раз вызовет функцию печати целого числа. Короче, напиши тест  и сравни.  Я сравнил, прежде чем постить

Пусть общественность нас рассудит.

Цитата:
Да уж, хватит. Последней фразой ты лишь подтвердил не знание реализаций C stream library и С++ iostreams,  в том числе и в многопоточных приложениях


Ты мне напомнил самого себя лет эдак 6 или 7 назад

Всего записей: 961 | Зарегистр. 21-08-2001 | Отправлено: 18:02 27-05-2003
Ryback

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dremon

Цитата:
Пусть общественность нас рассудит.  

А сам ты тест написать не можешь? Ну тогда - ау, общественность!!
 

Цитата:
Ты мне напомнил самого себя лет эдак 6 или 7 назад  

давай без этого обойдемся.
 
Предлагаю либо тему закрыть, либо аргументировать свои высказывания. Хочешь/можешь убедить, что stdio медленнее или обсудить многопоточность, давай в email/icq, не хочешь/не можешь - перестань вилять в своих предложениях, а то не серьезно это как-то.
 

Всего записей: 56 | Зарегистр. 22-05-2003 | Отправлено: 18:11 27-05-2003
Bloody_Nokia_Adept



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
dremon

Цитата:
Пусть общественность нас рассудит

Рассудит...
 
Я Ryback знаю не один год и работаем с ним вместе. То, что мы тут с ним пофлеймили это был прикол с его стороны (я только потом узнал, кто был за этим ником). С/С++ он знает отменно. Это факт.
 
Пусть я не согласен с ним в плане удобства пользования stdio/iostream, но то, что он приводил реальные и главное правильные примеры - факт! Все его примеры кода основаны на стандарте, который:  
1. гарантирует атомарность операций stdio
2. четко описывает использование iostream

Всего записей: 785 | Зарегистр. 27-11-2002 | Отправлено: 18:13 27-05-2003
dremon



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Пусть я не согласен с ним в плане удобства пользования stdio/iostream, но то, что он приводил реальные и главное правильные примеры - факт!

Хорошо. Рассмотрим правильные примеры.
1. Рассмотрим производительность (хоть и это и очень глупо сравнивать производительность консольных или тем более файловых операций на разных библиотеках - они сами по себе медленные). Возьмем этот пример:
printf("%d%d%d%d", 1,2,3,4,5);
cout<<1<<2<<3<<4<<5;
В первом случае библиотечная функция printf займется разбором строки, поиском спецификаций %d, и для каждой такой спецификации в итоге вызовет функцию печати этого числа в стдио. Для непонятливых - смотри реализацию этой функции в исходниках.
Во втором случае 5 раз будет вызвана функция печати числа в стдио.
Еще что-то нужно пояснять в плане производительности?
 
Далее. Как можно рассуждать о повышенной надежности библиотеки, в которой отсутствует контроль типов, передаваемых в функцию, и тем более, контроль количества аргументов, переданных в нее? Ну это просто смех. iostreams для того и разрабатывалась, чтобы решить эти проблемы.
 

Цитата:
гарантирует атомарность операций stdio

"Я шизею, дорогая редакция". С чего это ты взял, что stdio гарантирует атомарность операций? Каких конкретно операций? fprintf? Ничего подобного.

Цитата:
четко описывает использование iostream

где?
 
 
Добавлено
Я могу еще раз сказать то, что уже говорил дважды, но почему-то это было проигнорировано. LIBC - это библиотека для языка C. У него есть свои преимущества и своя ниша. Язык C++ - это другой язык. У него есть своя библиотека, включенная в стандарт языка. Советовать использовать в нем LIBC это все равно, что советовать использовать в нем ассемблерные вставки для увеличения производительности и надежности. Звучит так же нелепо.

Всего записей: 961 | Зарегистр. 21-08-2001 | Отправлено: 18:54 27-05-2003 | Исправлено: dremon, 19:00 27-05-2003
Ryback

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dremon

Цитата:
Еще что-то нужно пояснять в плане производительности?  

Да не надо ничего пояснять. Ты примеры попробуй. Хотябы с printf() с его разбором шаблонов, не говоря про самые простые, без парсинга, типа fwrite.  

Цитата:
Далее. Как можно рассуждать о повышенной надежности библиотеки, в которой отсутствует контроль типов, передаваемых в функцию, и тем более, контроль количества аргументов, переданных в нее? Ну это просто смех. iostreams для того и разрабатывалась, чтобы решить эти проблемы.  

Я с этим согласен. Да, использование stdio провоцирует глупые ошибки, но "Профессионалы не делают глупых ошибок".
 
 

Цитата:
"Я шизею, дорогая редакция". С чего это ты взял, что stdio гарантирует атомарность операций? Каких конкретно операций? fprintf? Ничего подобного.
 

Не надо только шизеть.
Это из документации на LIBC
"The POSIX standard requires that by default the stream operations are atomic. I.e., issueing two stream operations for the same stream in two threads at the same time will cause the operations to be executed as if they were issued sequentially." Я верю, ибо глядел исходники. И проверял на разных платфрмах.  
А это с whitepapers c www.unix.org: "The POSIX.1 and C-language functions that operate on character streams (represented by pointers to objects of type FILE) are required by POSIX.1c to be implemented in such a way that reentrancy is achieved (see ISO/IEC 9945:1-1996, §8.2)."
 

Цитата:
Я могу еще раз сказать то, что уже говорил дважды, но почему-то это было проигнорировано. LIBC - это библиотека для языка C. У него есть свои преимущества и своя ниша. Язык C++ - это другой язык. У него есть своя библиотека, включенная в стандарт языка. Советовать использовать в нем LIBC это все равно, что советовать использовать в нем ассемблерные вставки для увеличения производительности и надежности.

Абсолютно согласен, что C++ другой язык со своей библиотекой. Но какую ты напишешь программу, пользуясь только стандартом 14882? Калькулятор? Не больше. И никуда от GLIBC не денешься, будут у тебя там и pthread_create() и accept() и write(), read().  Так вот, вопрос то, что кому удобнее был сразу закрыт. А вот вопрос производительности один из нас так и не хочет проверить на практике. С многопоточностью вроде как разобрались, или нет?

Всего записей: 56 | Зарегистр. 22-05-2003 | Отправлено: 19:51 27-05-2003
mymuss



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
dremon
Ryback
Bloody_Nokia_Adept
Общественность приперлась, встречайте!
 
Итак, дабы расставить все точки над i, решил провести маленький тест.
Использовалось: Athlon 1000Mhz, FreeBSD 4.6.2-STABLE, gcc 2.95.3, perl 5.8.0, Benchmark 1.04
 
Итак!
Мамба намба ван:

Код:
 
#include <stdio.h>
или
#include <iostream.h>
 
int main (int argc, char **argv)
{
        int i;
        fprintf(stdout, "%d%d%d%d\n", 1, 2, 3, 4);
        или
        cout<<1<<2<<3<<4<<endl;
        exit (0);
}
 

Комманды компилятора:

Код:
 
gcc -Wall -o testc testc.c
g++ -Wall -o testcpp testcpp.cpp
 

Оболочка для тестирования:

Код:
 
#!/usr/bin/perl -w
use strict;
use Benchmark qw( :all );
my $cpp = './testcpp';
my $c   = './testc';
my $count = $ARGV[0];
cmpthese($count, {
        'c'   => sub {system($c)},
        'cpp' => sub {system($cpp)}, });
exit 0;
 

Результаты:

Цитата:
 
[andrew@tower:~/c]>./test.pl 1000 | grep -vi 1234
Benchmark: timing 1000 iterations of c, cpp...
         c:  2 wallclock secs ( 0.02 usr  0.42 sys +  0.05 cusr  1.38 csys =  1.87 CPU) @ 2285.71/s (n=1000)
       cpp:  3 wallclock secs ( 0.01 usr  0.44 sys +  0.41 cusr  2.34 csys =  3.20 CPU) @ 2245.61/s (n=1000)
      Rate cpp   c
cpp 2246/s  -- -2%
c   2286/s  2%  --
 

 
Мамба намба ту:
Ключевую строку меняем на:

Код:
 
for (i = 0; i <= 1000000; i++) {
        fprintf(stdout, "%d%d%d%d\n", 1, 2, 3, 4);
        или
        cout<<1<<2<<3<<4<<endl;
}
 

Комманды компилятора:

Код:
 
gcc -Wall -O3 -o testc testc.c
g++ -Wall -O3 -o testcpp testcpp.cpp
 

Результаты:

Цитата:
 
[andrew@tower:~/c]>time ./testc > /dev/null
real    0m1.496s
user    0m1.496s
sys     0m0.001s
 


Цитата:
 
[andrew@tower:~/c]>time ./testcpp > /dev/null
real    0m3.950s
user    0m2.487s
sys     0m1.458s
 

Комметарии излишни ?
 
(Аплодисментов не надо)


 
А вообще, кто-то правильно заметил, что libc != stdio.h. Там дофига функций работы с сигналами, процессами, локалью итд... Так что одним iostream и STL сыт не будешь. Использовать stdio или iostream - дело вкуса, но учить libc надо! (вспомните, как вопрос ставился )

----------
(a + b^n) / n = x, donc Dieu existe; répondez !
Euler

Всего записей: 709 | Зарегистр. 13-04-2003 | Отправлено: 21:58 27-05-2003 | Исправлено: mymuss, 22:00 27-05-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » хочу начать учить с++


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru