C Vs C ++ Vs C ++ 14 (Ein Laufzeitvergleich)

Während des Programmierens stecken Sie manchmal in einer Situation fest, in der Sie die Wahl haben, diese Frage in C und C ++ oder C ++ 14 zu beantworten. Der entscheidende Faktor hängt dann von der Laufzeit und der Fähigkeit des Programms ab, sich an Änderungen in anzupassen die Zukunft . Hier haben C ++, C ++ 14 einen Vorteil gegenüber C, da es in seiner Bibliothek über vordefinierte Funktionen verfügt, die als Standard Template Library (STL) bezeichnet werden. Dabei handelt es sich um eine Reihe von C ++ - Vorlagenklassen, um gemeinsame Programmierdatenstrukturen und -funktionen wie Listen und Stapel bereitzustellen , Arrays usw. Es ist eine Bibliothek mit Containerklassen, Algorithmen und Iteratoren, die viel Zeit spart, indem dem Programmierer mit einem Klick verschiedene Datenstrukturen zur Verfügung gestellt werden.

Der Hauptunterschied zwischen C und C ++ besteht darin, dass C eine prozedurale Programmiersprache ist und keine Klassen und Objekte unterstützt, während C ++ eine Kombination aus prozeduraler und objektorientierter Programmiersprache ist. Daher kann C ++ als hybride Sprache bezeichnet werden.

Sie haben vielleicht gehört, dass C ++ langsamer ist als C, aber haben Sie die Statistiken gesehen? Nach geringfügigen Programmänderungen können wir ein C ++ - Programm gleichzeitig oder manchmal sogar schneller ausführen lassen als ein in C geschriebenes Programm. Hier habe ich zwei Fragen zur binären Suche gestellt und sie dann in C und C ++ und C ++ 14 codiert und anschließend ihre Laufzeit verglichen.

Wenn Sie in C ++ im Allgemeinen cin / cout verwenden, kann die folgende Änderung sehr hilfreich sein. Fügen Sie es einfach zu Beginn des Programms ein und verwenden Sie es in main, und Sie können loslegen.

Hier finden Sie, was es tut.

Q1. Das Seifenrätsel

Es ist eine allgemeine Binärsuchfrage, in der q Abfragen gegeben werden, und wir müssen q Anzahl von Malen nach n Elementen und ihrer Komplexitäts-ID O (Q * Log (N)) binär suchen, wobei N keine Elemente im Array ist.

Die Lösung finden Sie hier.

Wenn ich es codiere und es auf großen Testfällen laufen lasse, ist das das, was ich habe.

Laufzeit von Q1 mit G ++ 5.4.0

Sie können deutlich sehen, dass C viel schneller ist als C ++ 14, aber es ist zu beachten, dass bei Verwendung dieser Modifikation (Boost) deutlich zu sehen ist, dass C ++ 14 und C ++ C in ihrer Ausführungszeit übertreffen (im Fall von große Testfälle).

Q2. Spielentwicklung starten

Dies ist eine einfache bis mittlere Frage, bei der N binäre Suchen in einem 2D-Array mit N Zeilen und M Spalten durchgeführt werden und dann das Minimum der in jeder Zeile erhaltenen Antwort ermittelt wird, die unsere endgültige Antwort ist. Die Komplexität ergibt sich zu O (Nlog (M)).

Die Lösung finden Sie hier.

Jetzt habe ich es in 3 verschiedenen Sprachen programmiert:

Laufzeit von Q2 mit G ++ 5.4.0

Hier kann man auch deutlich sehen, dass C C ++ 14 übertrifft, aber mit dieser Modifikation ist C ++ schneller als C.

Einige verwenden sogar getchar () unlocked (obwohl es ein Sicherheitsleck gibt), das unter all diesen am schnellsten ist, da es direkt mit Hilfe von Registern liest und schreibt, wobei die dazwischen liegenden Streams umgangen werden (nur verwenden, wenn Zeit ein großes Problem ist). Manchmal ist die zeitliche Begrenzung von Fragen so streng, dass diese Änderungen eine entscheidende Regel darstellen. Ohne sie kann es zu TLE kommen.

Der Compiler spielt auch eine entscheidende Rolle. Zwei davon sind G ++ 5.4.0 und CLANG. Ein Compiler ist ein Computerprogramm (oder eine Reihe von Programmen), das in einer Programmiersprache (der Quellsprache) geschriebenen Quellcode in eine andere Computersprache (die Zielsprache) umwandelt, wobei letztere häufig eine binäre Form aufweist, die als Objektcode bezeichnet wird. Der Compiler, der diese Aufgabe schneller erledigt, ist besser.

PROS VON GCC

1. GCC unterstützt Sprachen wie Java, Ada, FORTRAN, Go usw.

2. GCC unterstützt viele Spracherweiterungen, von denen einige nicht von Clang implementiert werden. Im C-Modus unterstützt GCC beispielsweise verschachtelte Funktionen und verfügt über eine Erweiterung, die VLAs in Strukturen ermöglicht.

PROS VON CLANG

  1. Clang ist viel schneller und benötigt viel weniger Speicher als GCC.
  2. Die Unterstützung von Clang für C ++ ist in vielerlei Hinsicht konformer als die von GCC.
  3. Clang unterstützt viele Spracherweiterungen, von denen einige nicht von GCC implementiert werden. Beispielsweise bietet Clang Attribute zum Überprüfen der Thread-Sicherheit und erweiterter Vektortypen.
  4. Clang wurde von Anfang an für eine äußerst klare und präzise Diagnose (Fehler- und Warnmeldungen) konzipiert und bietet Unterstützung für aussagekräftige Diagnosen.

Damit ist meine kleine lustige Aktivität zum Vergleichen der Ausführungszeit zwischen zwei in der Computerprogrammierung am häufigsten verwendeten Sprachen unter Verwendung der binären Suche als Dreh- und Angelpunkt abgeschlossen. Ich hoffe, Sie haben durch das Lesen etwas Wissen gewonnen und können die Programmiersprache besser auswählen.

Fröhliches Lesen !