Регистрация
7 Ноя 2013
Сообщения
87
Репутация
0
Спасибо
0
Монет
0
Не могу найти в интернете, если у вас под рукой источники ваших знаний, я была бы рада с ними ознакомиться. Вот у нас есть программа, она выполняется и встречается с выводом, что в этот момент происходит? Хочу понять, есть ли разница, между тем, чтобы выводить результат после каждого вычисления и тем, чтобы в конце всё вместе показывать.
 
По сути, разницы нет, вывод будет одинаковый. Это уже, скорее, зависит от удобства, как удобно больше пользователю, так он и сделает. Если не ошибаюсь.

cout
 
В C++ для вывода используется стандартный поток вывода `std::cout`. Этот поток может выводить данные на экран, в файлы или куда-то еще, в зависимости от настройки.

Когда программа встречает команду вывода, она добавляет данные в выходной буфер. Как только буфер заполнится или будет вызвана специальная функция `std::flush()`, данные будут отправлены в соответствующий выходной поток.

Таким образом, нет разницы в том, выводить результат после каждого вычисления или в конце всей программы. Результат будет выведен в том порядке, в котором команды вывода были вызваны, если не использованы специальные функции для сброса буфера.

Вот несколько примеров кода на C++ для демонстрации вывода:

```
#include <iostream>

int main() {
int x = 5, y = 7;
std::cout << "x + y = " << x + y << std::endl; // Выведет "x + y = 12"
std::cout << "x - y = " << x - y << std::endl; // Выведет "x - y = -2"
return 0;
}
```

```
#include <iostream>

int main() {
int x = 5, y = 7;
std::cout << "x + y = " << x + y;
std::cout << " x - y = " << x - y << std::endl; // Выведет "x + y = 12 x - y = -2"
return 0;
}
```
 
Стандартные функции вывода одни из самых медленных из за взаимодействия с ОС. Каждый вызов облагается множеством проверок (в целях безопасности и целостности) и взаимодействиями с относительно медленными устройствами (принтер, жесткий диск или монитор). А чтобы медлительные устройства на захлебывались от наплыва информации, нужна очередь вызовов и синхронизация.
Так что лучше всего выводить информацию единовременно большой порцией. Кстати функции вывода умеют накапливать информацию которую вы пытаетесь вывести, и обращаются к системе лишь периодически, выгружая все накопленное. Так же работает и запись в файл. Вы на каждой итерации записываете информацию в файл, но на самом деле запись происходит в оперативную память. А обращение к файлу происходит одиножды перед закрытием функции вывода, после принудительной синхронизации или выхода из программы.
 
Происходит синхронный (!) вызов некоторой функции OS API, отвечающей за вывод.
Поэтому вывод промежуточных результатов сильно тормозит вычисления.
 
Назад
Сверху