«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > scanf() против cin: что быстрее для ввода C++?

scanf() против cin: что быстрее для ввода C++?

Опубликовано 23 ноября 2024 г.
Просматривать:221

scanf() vs. cin: Which is Faster for C   Input?

Сравнение скорости: scanf() и cin

Вопрос:

Это правда что использование scanf() в программах на C выполняется быстрее, чем использование cin?

Ответ:

Да, scanf() действительно быстрее, чем cin в C , как показывают результаты сравнительного тестирования.

Провести test была написана простая программа для чтения большого списка чисел и вычисления их значения XOR. Программа была реализована с использованием как scanf() stdio, так и cin и cout iostream.

Результаты:

МетодИсполнение Время
scanf()6,4 секунды
cin and cout24,3 секунды

Эта значительная разница в скорости в первую очередь связано с издержками функций iostream при поддержании синхронизации с функциями stdio C.

Оптимизация производительности cin:

Однако, отключив синхронизацию с std::ios: :sync_with_stdio(false), версия iostream может достичь сопоставимых результатов производительность:

МетодВремя выполнения
cin и cout (с sync_with_stdio (ложь))5,5 секунд

Благодаря такой оптимизации iostream превосходит scanf() и становится самым быстрым методом.

Вывод:

Хотя scanf() по своей сути быстрее, чем cin, его использование в программах на C обычно не рекомендуется. потому что:

  • Он не является типобезопасным, в отличие от cin.
  • Это приводит к несогласованности в стиле программирования, смешиванию кода в стиле C и C.
  • iostream обеспечивает более современный и эффективный способ операций ввода и вывода, особенно при оптимизации путем отключения синхронизации.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3