C Vs C ++ Vs C ++ 14 (Porovnání doby běhu)

Při programování jste někdy byli uvíznuti v pozici, jako když máte na výběr tuto otázku v C a C ++ nebo C ++ 14, pak rozhodujícím faktorem je doba běhu a schopnost programu přizpůsobit se změnám v budoucnost . Zde C ++, C ++ 14 mají výhodu nad C, protože má ve své knihovně super předdefinované funkce nazvané Standard Template Library populárně známé jako STL, což je sada tříd šablony C ++, které poskytují běžné programovací datové struktury a funkce, jako jsou seznamy, hromádky , pole atd. Je to knihovna tříd kontejnerů, algoritmů a iterátorů, která šetří spoustu času tím, že poskytuje programátorům různé datové struktury jediným kliknutím.

Hlavní rozdíl mezi C a C ++ je v tom, že C je procedurální programovací jazyk a nepodporuje třídy a objekty, zatímco C ++ je kombinací procedurálního a objektově orientovaného programovacího jazyka; proto C ++ lze nazvat hybridním jazykem.

Nyní dochází k věci, možná jste slyšeli, že C ++ je pomalejší než C, ale viděli jste statistiky? Po provedení drobných úprav v programu můžeme provést program C ++ spuštěný současně nebo někdy dokonce rychleji než odpovídající program napsaný v jazyce C. Tady jsem vzal 2 otázky na Binární vyhledávání a pak je zakódoval v C a C ++ a C ++ 14 a poté porovnal jejich dobu běhu.

Pokud obecně používáte cin / cout v C ++, může být užitečná následující změna. Stačí jej zahrnout na začátek programu a používat jej jako hlavní a je dobré jít.

Co tady najdete.

Q1. Mýdlové tajemství

Jedná se o obecnou otázku binárního vyhledávání, ve které jsou zadány dotazy q, a musíme binární vyhledávání q kolikrát na n prvcích a jeho složitosti id O (Q * Log (N)), kde N není žádný z prvků v poli.

Řešení najdete zde.

Při kódování a spuštění ve velkých testovacích případech jsem získal toto.

Provozní doba Q1 pomocí G ++ 5.4.0

Můžete jasně vidět, že C je mnohem rychlejší než C ++ 14, ale všimněte si, že při použití této modifikace (zvýšení) je jasně vidět, že C ++ 14 a C ++ překonávají C v době jejich provedení (v případě velké testovací případy).

Q2. Zahájení vývoje hry

Jedná se o snadno-střední otázku, která zahrnuje provedení N binárních vyhledávání na 2-d poli s N řádky a sloupci M a pak nalezení minima odpovědi získané v každém řádku, což je naše konečná odpověď. Složitost se ukazuje jako O (Nlog (M)).

Řešení najdete zde.

Nyní jsem to kódoval na 3 různých jazycích:

Provozní doba Q2 pomocí G ++ 5.4.0

Také zde je jasně vidět, že C překonává C ++ 14, ale při použití této modifikace je C ++ rychlejší než C.

Někteří dokonce používají getchar () odemčený (ačkoli má bezpečnostní únik), což je mezi nimi nejrychlejší, protože přímo čte a zapisuje pomocí registru, který obchází toky mezi nimi (použijte, pouze pokud je čas velkým problémem). Někdy jsou časové limity na otázky tak přísné, že tyto modifikace hrají klíčové pravidlo, bez nich by člověk mohl získat TLE.

Kompilátor také hraje klíčovou roli. Dva z nich jsou G ++ 5.4.0 a CLANG. Kompilátor je počítačový program (nebo soubor programů), který transformuje zdrojový kód napsaný v programovacím jazyce (zdrojový jazyk) do jiného počítačového jazyka (cílový jazyk), přičemž druhý má často binární formu známou jako kód objektu. Kompilátor, který dokáže tuto práci rychleji, bude lepší.

PROS GCC

1. GCC podporuje jazyky, na které se clang nezaměřuje, jako jsou Java, Ada, FORTRAN, Go atd.

2. GCC podporuje mnoho jazykových rozšíření, z nichž některá nejsou implementována společností Clang. Například v režimu C podporuje GCC vnořené funkce a má rozšíření umožňující VLA ve strukturách.

PROS CLANG

  1. Clang je mnohem rychlejší a používá mnohem méně paměti než GCC.
  2. Clangova podpora C ++ je v mnoha ohledech kompatibilnější než GCC.
  3. Clang podporuje mnoho jazykových rozšíření, z nichž některá nejsou implementována GCC. Například, Clang poskytuje atributy pro kontrolu bezpečnosti vláken a rozšířené typy vektorů.
  4. Systém Clang byl navržen od začátku tak, aby poskytoval velmi jasnou a stručnou diagnostiku (chybové a varovné zprávy) a zahrnuje podporu expresivní diagnostiky.

Tím se uzavírá moje malá zábavná aktivita porovnávání doby provádění mezi dvěma nejčastěji používanými jazyky v počítačovém programování pomocí binárního vyhledávání jako pivotu. Doufám, že jste si přečetli určité znalosti a budete si moci lépe vybrat programovací jazyk.

Šťastné čtení !