Если в программе используется Сишный ввод/вывод (scanf()
, printf()
), то рассинхронизация потоков (std::ios_base::sync_with_stdio(false)
) может увеличить производительность? Или это работает только в обратную сторону?
Не удобства возникнут при запросе у пользователя например имени.
# include <iostream>
int main() {
std::ios_base::sync_with_stdio(false);
std::cout<<"Print name:";
char s[100];
scanf("%s",s);
printf("s=%s\n",s); }
Сначала запрашивает имя, а потом при закрытии программы только выводит запрос ввода.
В сишной библиотеке есть свой буфер, пусть он и занимается ускорением. А при отключении синхронизации два буфера (C++ и C) будут работать асинхронно.
$ ./a.out
Alex
s=Alex
Print name:
На производительность запаздывание вывода на экран никак не влияет. Всё зависит от исполнения консоли в операционной системе.
Да, это может ускорить ввод/вывод в обе стороны.
If the synchronization is turned off, the C++ standard streams are allowed to buffer their I/O independently, which may be considerably faster in some cases.
In practical terms, synchronization usually means that a standard iostream object and a standard stdio object share a buffer.
Cудя по описанию
In practice, this means that the synchronized C++ streams are unbuffered, and each I/O operation on a C++ stream is immediately applied to the corresponding C stream's buffer. This makes it possible to freely mix C++ and C I/O.
эта настройка влияет только на I/O из С++ - они становятся небуферизируемыми, а сишные потоки никак не затрагиваются. Да это и логично - ведь если никакой iostream
не подключать, то сишный ввод-вывод замедляться не должен, а отключать при этом совершенно нечего.
Так что, скорее всего, классичесий ввод-вывод не ускорится из-за изменения sync_with_stdio
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
В библиотеке есть функции:
Работаю над проектом(состоящий из нескольких подпроектов) Cmake с использование библиотеки wxWidgets, некоторые проекты не могут собраться по причине:
уважаемые форумчанеПишу программу по заданию(Даны 2 числа