C Vs C ++ Vs C ++ 14 (A Looptijdvergelijking)

Tijdens het programmeren, zat je misschien vast in een positie alsof je de keuze had om die vraag in C en C ++ of C ++ 14 te doen, dan is de beslissende factor de looptijd en het vermogen van het programma om zich aan te passen aan veranderingen in de toekomst . Hier hebben C ++, C ++ 14 een voorsprong op C omdat het super vooraf gedefinieerde functies in zijn bibliotheek heeft, Standard Template Library, in de volksmond STL genoemd, wat een set C ++ template-klassen is om gemeenschappelijke programmeergegevensstructuren en functies zoals lijsten, stapels te bieden , arrays, enz. Het is een bibliotheek met containerklassen, algoritmen en iterators die veel tijd besparen door verschillende datastructuren met één klik aan de programmeur te bieden.

Het grote verschil tussen C en C ++ is dat C een procedurele programmeertaal is en geen klassen en objecten ondersteunt, terwijl C ++ een combinatie is van zowel procedurele als objectgeoriënteerde programmeertaal; daarom kan C ++ een hybride taal worden genoemd.

Nu je ter zake komt, heb je misschien gehoord dat C ++ langzamer is dan C, maar heb je de statistieken gezien? Na kleine wijzigingen in het programma te hebben aangebracht, kunnen we een C ++ -programma tegelijkertijd of soms zelfs sneller laten werken dan een overeenkomstig programma dat in C is geschreven. Hier heb ik 2 vragen over Binair zoeken beantwoord en deze vervolgens gecodeerd in C en C ++ en C ++ 14 en vervolgens hun looptijd vergeleken.

Als u in het algemeen cin / cout in C ++ gebruikt, kan de volgende wijziging behoorlijk nuttig zijn. Neem het gewoon op in het begin van het programma en gebruik het in het algemeen en u bent klaar om te gaan.

Je kunt hier vinden wat het doet.

Q1. The Soap Mystery

Het is een algemene binaire zoekvraag waarin q-query's worden gegeven en we moeten q-aantal keren zoeken op n-elementen en de complexiteits-id O (Q * Log (N)) waarbij N geen elementen in de array is.

U vindt de oplossing hier.

Bij het coderen en uitvoeren op grote testgevallen kreeg ik dit.

Looptijd van Q1 met G ++ 5.4.0

Je kunt duidelijk zien dat C veel sneller is dan C ++ 14, maar het ding om op te merken is dat bij het gebruik van die aanpassing (boost) duidelijk te zien is dat C ++ 14 en C ++ beter presteren dan C in hun uitvoeringstijd (in het geval van grote testgevallen).

Q2. Spelontwikkeling starten

Dit is een easy-medium vraag waarbij N binaire zoekopdrachten op een 2D-array met N rijen en M kolommen worden uitgevoerd en vervolgens het minimum wordt gevonden van het antwoord dat in elke rij is verkregen, wat ons laatste antwoord is. Complexiteit blijkt O (Nlog (M)) te zijn.

Oplossing vindt u hier.

Nu coderen in 3 verschillende talen hier is wat ik heb:

Looptijd van Q2 met behulp van G ++ 5.4.0

Ook hier is duidelijk te zien dat C beter is dan C ++ 14, maar met die aanpassing is C ++ sneller dan C.

Sommigen gebruiken zelfs getchar () ontgrendeld (hoewel het een beveiligingslek heeft), wat het snelst is omdat het direct leest en schrijft met behulp van register waarbij de streams tussendoor worden omzeild (alleen gebruiken als tijd een grote zorg is). Soms zijn tijdslimieten op vragen zo strikt dat deze aanpassingen een cruciale regel spelen, zonder hen kan men TLE krijgen.

De compiler speelt ook een cruciale rol. Twee daarvan zijn G ++ 5.4.0 en CLANG. Een compiler is een computerprogramma (of een set programma's) dat broncode, geschreven in een programmeertaal (de brontaal), omzet in een andere computertaal (de doeltaal), waarbij de laatste vaak een binaire vorm heeft die bekend staat als objectcode. De compiler die dit werk sneller kan doen, zal beter zijn.

VOORDELEN VAN GCC

1. GCC ondersteunt talen die clang niet beoogt, zoals Java, Ada, FORTRAN, Go, etc.

2. GCC ondersteunt veel taalextensies, waarvan sommige niet door Clang worden geïmplementeerd. In de C-modus ondersteunt GCC bijvoorbeeld geneste functies en heeft een extensie die VLA's in structs toestaat.

Voordelen van CLANG

  1. Clang is veel sneller en gebruikt veel minder geheugen dan GCC.
  2. Clang's ondersteuning voor C ++ is in veel opzichten complianter dan die van GCC.
  3. Clang ondersteunt veel taalextensies, waarvan sommige niet door GCC worden geïmplementeerd. Clang biedt bijvoorbeeld attributen voor het controleren van threadveiligheid en uitgebreide vectortypes.
  4. Clang is vanaf het begin ontworpen om uiterst duidelijke en beknopte diagnostiek (fout- en waarschuwingsberichten) te bieden en biedt ondersteuning voor expressieve diagnostiek.

Dus dit sluit mijn kleine leuke activiteit van het vergelijken van de uitvoeringstijd tussen twee meest gebruikte talen in computerprogrammering met behulp van binair zoeken als een spil. Ik hoop dat je wat kennis hebt opgedaan door dit te lezen en dat je de programmeertaal op een betere manier kunt kiezen.

Veel leesplezier!