Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

23.02.2013, 15:00. Просмотров 464. Ответов 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);
и подобную хрень.
Это случаем не считается пережитками? Я привык, что чтение/запись в файл происходит с помощью потоков.
Или эти конструкции работают быстрее?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
NIch
399 / 310 / 27
Регистрация: 17.03.2010
Сообщений: 1,120
23.02.2013, 15:05 #2
Линукс пропитан Си насквозь...имхо си и его функции не пережиток, это фундамент...
2
Байт
Диссидент
Эксперт C
17228 / 11298 / 1789
Регистрация: 24.12.2010
Сообщений: 22,241
23.02.2013, 15:10 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Это
C
1
FILE *p_f = fopen(file_name, "filename");
не пережиток, а просто ошибка
А по теме - форматный вывод позволяет просто делать вещи, которые с потоковым '<<' за..мучаешься лепить
Вот попробуй простейшую табличку нарисовать...
3
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 610
Завершенные тесты: 1
23.02.2013, 15:11  [ТС] #4
Ну да, код был взят из программы, предназначенной для Линуха.
Ну а плане быстродействия что можно сказать?
0
Байт
23.02.2013, 15:14
  #5

Не по теме:

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

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

Не по теме:

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

0
Avazart
Эксперт С++
7420 / 5510 / 316
Регистрация: 10.12.2010
Сообщений: 24,597
Записей в блоге: 17
23.02.2013, 17:52 #7
Ну в обще то как пишут не такой уж быстрый ...
Скорее всего быстрее чем с с++потоками, но тем не менее анализ параметров занимает тоже прилично времени...
0
[progeR]
30 / 8 / 0
Регистрация: 20.08.2011
Сообщений: 610
Завершенные тесты: 1
23.02.2013, 18:48  [ТС] #8
Для вычисления на кластере лучше всякие fprintf'ы использовать?
0
Somebody
2792 / 1603 / 148
Регистрация: 03.12.2007
Сообщений: 4,200
Завершенные тесты: 3
23.02.2013, 19:22 #9
Цитата Сообщение от [progeR] Посмотреть сообщение
Для вычисления на кластере лучше всякие fprintf'ы использовать?
Научи использовать fprintf для вычислений, я тоже так хочу!
1
Kastaneda
Jesus loves me
Эксперт С++
4729 / 2933 / 242
Регистрация: 12.12.2009
Сообщений: 7,443
Записей в блоге: 2
Завершенные тесты: 1
23.02.2013, 19:44 #10
Цитата Сообщение от Avazart Посмотреть сообщение
Скорее всего быстрее чем с с++потоками, но тем не менее анализ параметров занимает тоже прилично времени...
Какой анализ параметров?
0
diagon
Higher
1933 / 1199 / 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 и после того, как все заработает и можно будет думать о оптимизациях, просто поэкспериментировать с различным выводом.
0
Avazart
Эксперт С++
7420 / 5510 / 316
Регистрация: 10.12.2010
Сообщений: 24,597
Записей в блоге: 17
23.02.2013, 19:45 #12
Цитата Сообщение от Kastaneda Посмотреть сообщение
Какой анализ параметров?
Цитата Сообщение от progeR Посмотреть сообщение
C++
1
fprintf(p_f, "VarName= %d\n", someVar);
Этот
C++
1
"VarName= %d\n"
0
Kastaneda
23.02.2013, 21:38     Пережитки С
  #13

Не по теме:

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

0
23.02.2013, 21:38
Ответ Создать тему
Опции темы

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