Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 603
#1

Пережитки С - C++

23.02.2013, 15:00. Просмотров 439. Ответов 12
Метки нет (Все метки)

Добрый день.
У меня вопрос по поводу пережитков языка С.
Сегодня открыл чужой код и встретил такие конструкции:
C
1
FILE *p_f = fopen(file_name, "filename");
C
1
fprintf(p_f, "VarName= %d\n", someVar);
C
1
sprintf(data_name, "%s/data.txt", dir_name);
и подобную хрень.
Это случаем не считается пережитками? Я привык, что чтение/запись в файл происходит с помощью потоков.
Или эти конструкции работают быстрее?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NIch
399 / 310 / 27
Регистрация: 17.03.2010
Сообщений: 1,120
23.02.2013, 15:05     Пережитки С #2
Линукс пропитан Си насквозь...имхо си и его функции не пережиток, это фундамент...
Байт
Эксперт C
15551 / 9893 / 1487
Регистрация: 24.12.2010
Сообщений: 18,507
23.02.2013, 15:10     Пережитки С #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Это
C
1
FILE *p_f = fopen(file_name, "filename");
не пережиток, а просто ошибка
А по теме - форматный вывод позволяет просто делать вещи, которые с потоковым '<<' за..мучаешься лепить
Вот попробуй простейшую табличку нарисовать...
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 603
23.02.2013, 15:11  [ТС]     Пережитки С #4
Ну да, код был взят из программы, предназначенной для Линуха.
Ну а плане быстродействия что можно сказать?
Байт
23.02.2013, 15:14
  #5

Не по теме:

Цитата Сообщение от NIch Посмотреть сообщение
Вначале был Бит, затем Байт и только потом появилось Слово...
Спасибо! Теперь я буду знать больше о себе и о своем месте в мироздании

NIch
399 / 310 / 27
Регистрация: 17.03.2010
Сообщений: 1,120
23.02.2013, 15:25     Пережитки С #6
Цитата Сообщение от [progeR
Ну а плане быстродействия что можно сказать?
Близок к ассемблеру...
На си как, и на ассемблере, как и на языках более высокого уровня можно писать и сверхбыстрый код и "говнокод".
Если код хорошо отлажен, и используется хороший компилятор, то по быстродействию имхо самый быстрый.
Спасибо! Теперь я буду знать больше о себе и о своем месте в мироздании

Не по теме:

Это же хорошо, когда человек совершенствуется.

Avazart
7065 / 5242 / 262
Регистрация: 10.12.2010
Сообщений: 23,062
Записей в блоге: 17
23.02.2013, 17:52     Пережитки С #7
Ну в обще то как пишут не такой уж быстрый ...
Скорее всего быстрее чем с с++потоками, но тем не менее анализ параметров занимает тоже прилично времени...
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 603
23.02.2013, 18:48  [ТС]     Пережитки С #8
Для вычисления на кластере лучше всякие fprintf'ы использовать?
Somebody
2780 / 1594 / 143
Регистрация: 03.12.2007
Сообщений: 4,178
Завершенные тесты: 1
23.02.2013, 19:22     Пережитки С #9
Цитата Сообщение от [progeR] Посмотреть сообщение
Для вычисления на кластере лучше всякие fprintf'ы использовать?
Научи использовать fprintf для вычислений, я тоже так хочу!
Kastaneda
Форумчанин
Эксперт С++
4470 / 2832 / 224
Регистрация: 12.12.2009
Сообщений: 7,202
Записей в блоге: 1
Завершенные тесты: 1
23.02.2013, 19:44     Пережитки С #10
Цитата Сообщение от Avazart Посмотреть сообщение
Скорее всего быстрее чем с с++потоками, но тем не менее анализ параметров занимает тоже прилично времени...
Какой анализ параметров?
diagon
Higher
1924 / 1190 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
23.02.2013, 19:45     Пережитки С #11
Там все неоднозначно. Чисто теоретически плюсовый I/O быстрее, так как у него есть информация о типах и ему не приходится парсить строку форматирования.
Я как-то проводил тест на gcc, который выводил 1е7 чисел в файл. Потоки вывели за 7 секунд. <cstdio> - за 27 секунд.
НО. Когда я изменил хедер на <stdio.h>, то программа отработала за 2.4 секунды.

Так что на мой взгляд разумнее всего инкапсулировать I/O и после того, как все заработает и можно будет думать о оптимизациях, просто поэкспериментировать с различным выводом.
Avazart
7065 / 5242 / 262
Регистрация: 10.12.2010
Сообщений: 23,062
Записей в блоге: 17
23.02.2013, 19:45     Пережитки С #12
Цитата Сообщение от Kastaneda Посмотреть сообщение
Какой анализ параметров?
Цитата Сообщение от progeR Посмотреть сообщение
C++
1
fprintf(p_f, "VarName= %d\n", someVar);
Этот
C++
1
"VarName= %d\n"
Kastaneda
23.02.2013, 21:38     Пережитки С
  #13

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
Этот
C++
1
"VarName= %d\n"
да, я тупанул, праздник все таки)

Yandex
Объявления
23.02.2013, 21:38     Пережитки С
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru