C Vs C ++ Vs C ++ 14 (A Primerjava časa delovanja)

Med programiranjem se boste včasih znašli v položaju, ko ste se odločili za to vprašanje v C in C ++ ali C ++ 14, potem je odločilni dejavnik čas delovanja in zmožnost programa, da se prilagodi spremembam v prihodnost . Tu imajo C ++, C ++ 14 prednost pred C, saj ima v svoji knjižnici super vnaprej določene funkcije, imenovane Standard Template Library, popularno znane kot STL, ki je niz razredov C ++ predloge za zagotavljanje skupnih programskih podatkovnih struktur in funkcij, kot so seznami, skladi , nizi itd. To je knjižnica vsebniških razredov, algoritmov in iteratorjev, ki prihrani na tone časa, tako da programerju s klikom zagotovi različne podatkovne strukture.

Glavna razlika med C in C ++ je v tem, da je C procesni programski jezik in ne podpira razredov in predmetov, medtem ko je C ++ kombinacija programskega in objektno usmerjenega programskega jezika; zato lahko C ++ imenujemo hibridni jezik.

Zdaj, ko ste že prišli do točke, ste morda slišali, da je C ++ počasnejši od C, a ste že videli statistiko? Po manjših spremembah programa lahko program C ++ zaženemo v istem času ali včasih celo hitreje kot ustrezen program, napisan na C. Tu sem vzel 2 vprašanja o Binarnem iskanju in jih nato kodiral v C in C ++ in C ++ 14 in nato primerjal njihov čas delovanja.

Če običajno uporabljate cin / cout v C ++, je naslednja sprememba morda zelo koristna. Samo vključite ga v začetek programa in ga uporabljajte v glavnem in prav ste pripravljeni.

Tukaj lahko najdete, kaj počne.

Q1. Skrivnost milnice

To je splošno binarno iskalno vprašanje, v katerem so podane q poizvedbe in moramo binarno iskanje q število krat na n elementih in njegov kompleksnost id O (Q * Log (N)), kjer N ni elementov v matriki.

Rešitev najdete tukaj.

Ko sem ga kodiral in izvajal na velikih testnih primerih, je to tisto, kar sem dobil.

Čas delovanja Q1 z uporabo G ++ 5.4.0

Jasno lahko vidite, da je C veliko hitrejši od C ++ 14, vendar je treba opaziti, da je pri uporabi te spremembe (povečanje) jasno razvidno, da C ++ 14 in C ++ v času izvršitve prekašata C (v primeru veliki testni primeri).

Q2. Začetek razvoja iger

To vprašanje je enostavno in srednje veliko, kar vključuje izvedbo N binarnih iskanj na dvodnevnem nizu z N vrsticami in stolpci M in nato iskanje najmanjšega odgovora v vsaki vrstici, ki je naš končni odgovor. Kompleksnost se izkaže za O (Nlog (M)).

Rešitev najdete tukaj.

Zdaj sem ga kodiral v 3 različne jezike:

Čas delovanja Q2 z uporabo G ++ 5.4.0

Tudi tukaj je jasno razvidno, da C presega C ++ 14, vendar je s to spremembo C ++ hitrejši od C.

Nekateri celo uporabljajo getchar () odklenjeno (čeprav ima varnostni uhajanje), kar je najhitreje med vsemi naštetimi, saj neposredno bere in piše s pomočjo registra, tako da obide tokove vmes (uporabijo le, če čas vzbuja veliko skrb). Včasih so časovne omejitve pri vprašanjih tako stroge, da te spremembe igrajo ključno pravilo, brez njih ni mogoče dobiti TLE.

Tudi prevajalnik igra ključno vlogo. Dva od njih sta G ++ 5.4.0 in CLANG. Prevajalnik je računalniški program (ali nabor programov), ki pretvori izvorno kodo, napisano v programskem jeziku (izvorni jezik), v drug računalniški jezik (ciljni jezik), pri čemer ima slednji pogosto dvojiško obliko, imenovano objektna koda. Prevajalnik, ki to delo opravi hitreje, bo boljši.

PROS GCC

1. GCC podpira jezike, ki jih klepanje ne želi, na primer Java, Ada, FORTRAN, Go itd.

2. GCC podpira številne jezikovne razširitve, katerih nekaterih Clang ne izvaja. Na primer, v načinu C GCC podpira ugnezdene funkcije in ima razširitev, ki omogoča VLA v strukturah.

PROS CLANG-a

  1. Clang je veliko hitrejši in porabi veliko manj pomnilnika kot GCC.
  2. Clangova podpora C ++ je v mnogih pogledih bolj skladna od GCC.
  3. Clang podpira številne jezikovne razširitve, od katerih nekatere ne izvaja GCC. Na primer, Clang zagotavlja atribute za preverjanje varnosti niti in razširjenih vrst vektorjev.
  4. Clang je bil zasnovan že od samega začetka, da omogoča izredno jasno in jedrnato diagnostiko (sporočila o napakah in opozorila) ter vključuje podporo za ekspresivno diagnostiko.

Tako zaključujem mojo malo zabavno aktivnost primerjave časa izvajanja med dvema najpogosteje uporabljenima jezikoma v računalniškem programiranju, ki uporabljata binarno iskanje kot vrtišče. Upam, da ste s tem prebrali nekaj znanja in boste lahko izbrali programski jezik na boljši način.

Veselo branje!