C Vs C ++ Vs C ++ 14 (A Confronto del tempo di esecuzione)

Durante la programmazione, a volte potresti essere rimasto bloccato in una posizione come quando hai scelto di fare quella domanda in C e C ++ o C ++ 14, quindi il fattore decisivo arriva al tempo di esecuzione e alla capacità del programma di adattarsi ai cambiamenti in il futuro . Qui C ++, C ++ 14 ha un vantaggio rispetto a C in quanto ha funzioni super predefinite nella sua libreria denominata Standard Template Library popolarmente conosciuta come STL che è un insieme di classi di modelli C ++ per fornire strutture e funzioni di dati di programmazione comuni come elenchi, stack , array, ecc. È una libreria di classi di container, algoritmi e iteratori che consente di risparmiare tonnellate di tempo fornendo varie strutture di dati al programmatore con un clic.

La principale differenza tra C e C ++ è che C è un linguaggio di programmazione procedurale e non supporta classi e oggetti, mentre C ++ è una combinazione di linguaggio di programmazione procedurale e orientato agli oggetti; pertanto il C ++ può essere chiamato un linguaggio ibrido.

Ora arrivando al punto, potresti aver sentito che C ++ è più lento di C ma hai visto le statistiche? Dopo aver apportato lievi modifiche al programma, possiamo fare in modo che un programma C ++ venga eseguito contemporaneamente o talvolta anche più velocemente di un programma corrispondente scritto in C. Qui ho preso 2 domande sulla ricerca binaria e poi le ho codificate in C e C ++ e C ++ 14 e poi ho confrontato il loro tempo di esecuzione.

Se si utilizza generalmente cin / cout in C ++, la seguente modifica può essere molto utile. Basta includerlo all'inizio del programma e usarlo in main e sei a posto.

Puoi trovare quello che fa qui.

Q1. Il mistero del sapone

È una domanda di ricerca binaria generale in cui vengono fornite q query e dobbiamo cercare binariamente q numero di volte su n elementi e la sua complessità id O (Q * Log (N)) dove N non è un elemento di un array.

Puoi trovare la soluzione qui.

Quando lo codifico e lo eseguo su grandi casi di test, questo è quello che ho ottenuto.

Tempo di esecuzione di Q1 utilizzando G ++ 5.4.0

Puoi vedere chiaramente che C è molto più veloce di C ++ 14 ma la cosa da notare è che quando si utilizza quella modifica (boost) si può chiaramente vedere che C ++ 14 e C ++ superano C nel loro tempo di esecuzione (in caso di grandi casi di test).

Q2. Avvio dello sviluppo del gioco

Questa è una domanda medio-facile che prevede l'esecuzione di ricerche binarie N su un array 2-D con N righe e colonne M e quindi la ricerca del minimo della risposta ottenuta in ogni riga che è la nostra risposta finale. La complessità risulta essere O (Nlog (M)).

La soluzione può essere trovata qui.

Ora codificandolo in 3 lingue diverse qui è quello che ho ottenuto:

Tempo di esecuzione di Q2 utilizzando G ++ 5.4.0

Anche qui si può vedere chiaramente che C supera le prestazioni di C ++ 14 ma utilizzando tale modifica, C ++ è più veloce di C.

Alcuni usano persino getchar () sbloccato (sebbene abbia una perdita di sicurezza), che è il più veloce tra tutti questi poiché legge e scrive direttamente usando il registro bypassando i flussi tra di loro (usare solo se il tempo è una grande preoccupazione). A volte i limiti di tempo per le domande sono così rigidi che queste modifiche giocano una regola cruciale, senza di esse si può ottenere la TLE.

Anche il compilatore svolge un ruolo cruciale. Due di questi sono G ++ 5.4.0 e CLANG. Un compilatore è un programma per computer (o un insieme di programmi) che trasforma il codice sorgente scritto in un linguaggio di programmazione (la lingua di origine) in un altro linguaggio del computer (la lingua di destinazione), che spesso ha una forma binaria nota come codice oggetto. Il compilatore che può fare questo lavoro più velocemente sarà migliore.

PRO DI GCC

1. GCC supporta lingue a cui clang non punta, come Java, Ada, FORTRAN, Go, ecc.

2. GCC supporta molte estensioni di lingua, alcune delle quali non sono implementate da Clang. Ad esempio, in modalità C, GCC supporta funzioni nidificate e ha un'estensione che consente VLA nelle strutture.

PRO DI CLANG

  1. Clang è molto più veloce e utilizza molta meno memoria di GCC.
  2. Il supporto di Clang per C ++ è più conforme di GCC in molti modi.
  3. Clang supporta molte estensioni di lingua, alcune delle quali non sono implementate da GCC. Ad esempio, Clang fornisce attributi per il controllo della sicurezza del thread e dei tipi di vettore estesi.
  4. Clang è stato progettato fin dall'inizio per fornire una diagnostica estremamente chiara e concisa (messaggi di errore e di avviso) e include il supporto per la diagnostica espressiva.

Quindi questo conclude la mia piccola attività divertente di confrontare i tempi di esecuzione tra due lingue più comunemente utilizzate nella programmazione del computer usando la ricerca binaria come perno. Spero che tu abbia acquisito alcune conoscenze leggendo questo e sarai in grado di scegliere il linguaggio di programmazione in modo migliore.

Buona lettura !