C против C ++ против C ++ 14 (сравнение времени работы)

Во время программирования иногда вы могли застрять в ситуации, когда у вас есть выбор ответить на этот вопрос в C и C ++ или C ++ 14 , тогда решающим фактором становится время выполнения и способность программы адаптироваться к изменениям в будущем. Здесь C ++, C ++ 14 имеет преимущество перед C, поскольку в его библиотеке есть супер предопределенные функции под названием Стандартная библиотека шаблонов, широко известная как STL, который представляет собой набор классов шаблонов C ++ для предоставления общих программных структур данных и функций, таких как списки, стеки, массивы и т. д. Это библиотека контейнерных классов, алгоритмов и итераторов, которая экономит массу времени, предоставляя программисту различные структуры данных одним щелчком мыши.

Основное различие между C и C ++ заключается в том, что C является процедурным языком программирования и не поддерживает классы и объекты, а C ++ - это комбинация процедурного и объектно-ориентированного языка программирования; поэтому C ++ можно назвать гибридным языком.

Теперь, переходя к сути, вы, возможно, слышали, что C ++ медленнее, чем C, но видели ли вы статистику? После внесения небольших изменений в программу мы можем заставить программу C ++ работать одновременно или иногда даже быстрее, чем соответствующая программа, написанная на C. Здесь я ответил на 2 вопроса по Двоичный поиск, затем закодировал их на C, C ++ и C ++ 14 и затем сравнил время их выполнения.

Если вы обычно используете cin / cout в C ++, следующая модификация может оказаться весьма полезной. Просто включите его в начало программы и используйте в основном, и все готово.

Вы можете узнать, что он делает здесь.

Q1. Мыльная тайна

Это общий вопрос двоичного поиска, в котором задаются q запросов, и мы должны выполнить двоичный поиск q раз по n элементам и его идентификатору сложности O (Q * Log (N)), где N - количество элементов в массиве.

Вы можете найти решение здесь.

Вот что я получил при кодировании и запуске на больших тестовых примерах.

Вы можете ясно видеть, что C намного быстрее, чем C ++ 14, но следует обратить внимание на то, что при использовании этой модификации (ускорения) ясно видно, что C ++ 14 и C ++ превосходит C по времени выполнения (в случае больших тестов).

Q2. Начало разработки игры

Это вопрос простой средней сложности, который включает выполнение N бинарных поисков в двумерном массиве с N строками и M столбцами, а затем поиск минимума ответа, полученного в каждой строке, который является нашим окончательным ответом. Сложность оказывается O (Nlog (M)).

Решение можно найти ее е.

Теперь кодирую его на 3 разных языках, вот что у меня получилось:

Здесь также ясно видно, что C превосходит C ++ 14, но при использовании этой модификации C ++ быстрее, чем C.

Некоторые даже используют getchar () unlocked (хотя у него есть утечка безопасности), который является самым быстрым среди всех из них, поскольку он напрямую читает и записывает с помощью регистра, минуя потоки между ними (используйте только в том случае, если время является большой проблемой). Иногда временные рамки для вопросов настолько строги, что эти изменения играют решающую роль, без них можно получить TLE.

Компилятор также играет решающую роль. Два из них - G ++ 5.4.0 и CLANG. Компилятор - это компьютерная программа (или набор программ), преобразующая исходный код, написанный на языке программирования ( исходный язык) на другой компьютерный язык (целевой язык), причем последний часто имеет двоичную форму, известную как объектный код. Компилятор, который может выполнять эту работу быстрее, будет лучше.

ПЛЮСЫ GCC

1. GCC поддерживает языки, на которые clang не стремится, такие как Java, Ada, FORTRAN, Go и т. Д.

2. GCC поддерживает множество языковых расширений, некоторые из которых не реализованы Clang. Например, в режиме C GCC поддерживает вложенные функции и имеет расширение, позволяющее использовать VLA в структурах.

ЗА КЛАНГ

  1. Clang намного быстрее и использует гораздо меньше памяти, чем GCC.
  2. Поддержка C ++ в Clang во многих отношениях более совместима, чем GCC.
  3. Clang поддерживает многие языковые расширения, некоторые из которых не реализованы GCC. Например, Clang предоставляет атрибуты для проверки безопасности потоков и расширенных векторных типов.
  4. Clang с самого начала разрабатывался для обеспечения предельно ясной и краткой диагностики (сообщения об ошибках и предупреждения) и включает поддержку выразительной диагностики.

На этом я завершаю свое маленькое забавное занятие по сравнению времени выполнения двух наиболее часто используемых языков в компьютерном программировании с использованием двоичного поиска в качестве опорной точки. Я надеюсь, что вы получили некоторые знания, прочитав это, и сможете лучше выбрать язык программирования.

Приятного чтения!