C V C ++ V C ++ 14 (A važiavimo laiko palyginimas)

Programavimo metu jūs kartais buvote užstrigę tokioje padėtyje, kai pasirinkote atlikti šį klausimą C ir C ++ ar C ++ 14, tada lemiamą veiksnį lemia veikimo laikas ir programos galimybė prisitaikyti prie pokyčių ateitis . Čia „C ++“, „C ++ 14“ turi pranašumą prieš „C“, nes ji turi ypač iš anksto apibrėžtas funkcijas savo bibliotekoje, vadinamoje „Standartinių šablonų biblioteka“, liaudiškai žinoma kaip STL, kuri yra „C ++“ šablonų klasių rinkinys, skirtas bendroms programavimo duomenų struktūroms ir funkcijoms, tokioms kaip sąrašai, krūvos, teikti. , masyvai ir kt. Tai konteinerių klasių, algoritmų ir iteratorių biblioteka, taupanti daug laiko, programuotojui pateikiant įvairias duomenų struktūras vienu spustelėjimu.

Pagrindinis skirtumas tarp C ir C ++ yra tas, kad C yra procedūrinė programavimo kalba ir nepalaiko klasių bei objektų, o C ++ yra ir procedūrinės, ir į objektą orientuotos programavimo kalbos derinys; todėl C ++ galima vadinti hibridine kalba.

Galbūt jūs jau girdėjote, kad „C ++“ yra lėtesnis nei „C“, bet ar matėte statistiką? Atlikę nedidelius programos pakeitimus, galime padaryti „C ++“ programą vykdomą tuo pačiu laiku arba kartais net greičiau nei atitinkama programa, parašyta C kalba. Pateikiau 2 klausimus dvejetainėje paieškoje, tada užkodaviau juos C ir C ++ ir C ++ 14, tada palyginau jų veikimo laiką.

Jei C ++ paprastai naudojate cin / cout, tada ši modifikacija gali būti gana naudinga. Tiesiog įtraukite ją į programos pradžią ir naudokite ją iš esmės, ir jums gera eiti.

Čia galite rasti tai, ką ji daro.

Q1. Muilo paslaptis

Tai yra bendras dvejetainės paieškos klausimas, kuriame pateikiamos q užklausos ir mes turime atlikti dvejetainę paiešką q kartų skaičių n elementų ir jo sudėtingumo id O (Q * Log (N)), kur N nėra masyvo elementų.

Čia galite rasti sprendimą.

Aš tai kodavau ir paleidau dideliais bandomaisiais atvejais.

Q1 važiavimo laikas naudojant G ++ 5.4.0

Jūs galite aiškiai pamatyti, kad C yra daug greitesnis nei C ++ 14, tačiau reikia pastebėti, kad naudojant šią modifikaciją (padidinimą) galima aiškiai pastebėti, kad C ++ 14 ir C ++ jų vykdymo metu lenkia C (jei dideli testiniai atvejai).

Q2. Pradėti žaidimų kūrimą

Tai paprastas ir vidutinis klausimas, kurį atliekant reikia atlikti N dvejetainę paiešką 2-masyve su N eilutėmis ir M stulpeliais, tada surasti kiekvienoje eilutėje gautą atsakymo minimumą, kuris yra mūsų galutinis atsakymas. Paaiškėja, kad sudėtingumas yra O (Nlog (M)).

Sprendimą galite rasti čia.

Dabar tai užkoduota 3 skirtingomis kalbomis:

Q2 važiavimo laikas naudojant G ++ 5.4.0

Čia taip pat galima aiškiai pamatyti, kad C pralenkia C ++ 14, tačiau naudojant šią modifikaciją C ++ yra greitesnis nei C.

Kai kurie netgi naudoja „getchar ()“ atrakinę (nors turi saugumo nutekėjimą), kuris yra greičiausias tarp visų, nes tiesiogiai skaito ir rašo naudodamas registrą, apeidamas srautus tarp jų (naudokite tik tuo atveju, jei laikas kelia didelį susirūpinimą). Kartais klausimų pateikimo laikas yra toks griežtas, kad šie pakeitimai atlieka esminę taisyklę, be jų gali būti suteikta TLE reikšmė.

Sudarytojas taip pat vaidina lemiamą vaidmenį. Du iš jų yra G ++ 5.4.0 ir CLANG. Kompiliatorius yra kompiuterinė programa (arba programų rinkinys), kuris programavimo kalba (šaltinio kalba) parašytą kodą paverčia kita kompiuterio kalba (tiksline kalba), o pastaroji dažnai turi dvejetainę formą, vadinamą objekto kodu. Kompiliatorius, kuris gali atlikti šį darbą greičiau, bus geresnis.

PĮB plusai

1. GCC palaiko kalbas, kurių nesiekia klanas, tokias kaip „Java“, „Ada“, FORTRAN, „Go“ ir kt.

2. GCC palaiko daugelį kalbų plėtinių, kurių kai kurie neįdiegti „Clang“. Pvz., C režimu GCC palaiko įdėtas funkcijas ir turi plėtinį, leidžiantį VLA struktūrose.

KLANGOS Pliusai

  1. Klanas yra daug greitesnis ir sunaudoja daug mažiau atminties nei GCC.
  2. Klano palaikymas C ++ daugeliu atžvilgių yra labiau suderinamas nei GCC.
  3. „Clang“ palaiko daugelį kalbų plėtinių, iš kurių kai kurie nėra GCC įdiegti. Pavyzdžiui, „Clang“ teikia atributus, skirtus patikrinti siūlų saugumą ir išplėstinius vektorių tipus.
  4. „Clang“ nuo pat pradžių buvo sukurtas teikti labai aiškią ir glaustą diagnostiką (klaidų ir įspėjamuosius pranešimus) ir apima išraiškingos diagnostikos palaikymą.

Taigi tai užbaigia mano nedidelę linksmą veiklą, kai lyginamas vykdymo laikas tarp dviejų dažniausiai kompiuterių programavime naudojamų kalbų, naudojant dvejetainę paiešką kaip šerdį. Tikiuosi, kad įgijote šiek tiek žinių perskaitę tai ir galėsite geriau pasirinkti programavimo kalbą.

Laimingo skaitymo!