C Vs C ++ Vs C ++ 14 (İşləmə müddətinin müqayisəsi)

Proqramlaşdırma zamanı bəzən bu sualı C və C ++ və ya C ++ 14 seçimində seçdiyiniz bir vəziyyətdə qalmış ola bilərsiniz, onda qərar verən amil işləmə vaxtına və proqramın dəyişikliklərə uyğunlaşma qabiliyyətinə gəlir. gələcək . Burada C ++, C ++ 14 ümumi bir proqramlaşdırma məlumat strukturları və siyahılar, yığınlar kimi funksiyaları təmin etmək üçün C ++ şablon sinifləri toplusudur. , seriallar və s. Konteyner siniflərinin, alqoritmlərin və iteratorların kitabxanasıdır, proqramı bir tıklayarak müxtəlif məlumat quruluşlarını təmin etməklə saatlarla qənaət edir.

C və C ++ arasındakı əsas fərq C prosedur proqramlaşdırma dilidir və sinifləri və obyektləri dəstəkləmir, C ++ həm prosedur, həm də obyekt yönümlü proqramlaşdırma dilinin birləşməsidir; buna görə C ++ hibrid dili adlandırıla bilər.

İndi nöqtəyə gəldikdə, C ++ -nin C-dən daha yavaş olduğunu eşitmisiniz, ancaq statistikanı gördünüzmü? Proqramda yüngül dəyişikliklər etdikdən sonra C ++ proqramını eyni vaxtda və ya bəzən C-də yazılmış müvafiq proqramdan daha sürətli işləyə bilərik. Burada İkili Axtarışda 2 sual aldım və onları C və C ++ və C ++ 14 kodlaşdırdım və işləmə müddətlərini müqayisə etdim.

Əgər C ++-də ümumiyyətlə cin / cout istifadə edirsinizsə, onda aşağıdakı dəyişiklik çox kömək edə bilər. Sadəcə proqramın əvvəlinə daxil edin və əsas olaraq istifadə edin və getmək yaxşıdır.

Burada nə etdiyini tapa bilərsiniz.

Q1. Sabun sirri

Bu q sorgularının verildiyi ümumi ikili axtarış suallarıdır və massivdə N elementlərinin olmadığı yerdə n elementləri və onun mürəkkəbliyi id O (Q * Giriş (N)) üzərində ikili axtarış aparmalıyıq.

Bunun həllini burada tapa bilərsiniz.

Onu kodlaşdırarkən və böyük sınaq işlərində işlədikdə, əldə etdiyim şey budur.

G ++ 5.4.0 istifadə edərək Q1-nin işləmə müddəti

C'nin C ++ 14'dən daha sürətli olduğunu aydın görə bilərsiniz, lakin diqqətə alınmalı bir şey odur ki, həmin modifikasiyanı (gücləndirici) istifadə edərkən C ++ 14 və C ++ modellərinin icra müddətində C-dən üstün olduğunu aydın görmək olur böyük sınaq halları).

Q2. Oyun inkişafına başlayır

Bu, N satırları və M sütunları olan 2-c massivdə N ikili axtarışların aparılmasını və sonra son cavabımız olan hər cərgədə alınan cavabın minimumunu tapmağı özündə cəmləşdirən asan bir orta sualdır. Mürəkkəblik O (Nlog (M)) olur.

Həllini burada tapa bilərsiniz.

İndi burada 3 fərqli dildə kodlaşdırma, əldə etdiyim şeydir:

G ++ 5.4.0 istifadə edərək Q2-nin işləmə müddəti

Burada C aydındır ki, C ++ 14 üstündür, lakin bu modifikasiyadan istifadə edərək C ++ C-dən daha sürətli olur.

Bəziləri, hamısının arasındakı axınları kənara qoyaraq reyestri istifadə edərək birbaşa oxuyur və yazdıqları üçün hamısı arasında ən sürətli olan getchar () kilidini açır (təhlükəsizlik sızması olsa da) istifadə edirlər. Bəzən suallara vaxt məhdudiyyəti o qədər sərt olur ki, bu dəyişikliklər çox vacib bir qayda oynayır, bunlar olmadan TLE əldə edə bilərsiniz.

Tərtib edən də mühüm rol oynayır. Bunlardan ikisi G ++ 5.4.0 və CLANG. Bir Kompilyator, bir proqramlaşdırma dilində (mənbə dili) yazılmış mənbə kodunu başqa bir kompüter dilinə (hədəf dili) çevirən, sonuncusu tez-tez obyekt kodu kimi tanınan ikili formaya malik bir kompüter proqramıdır. Bu işi daha sürətli edə bilən tərtibçi daha yaxşı olacaq.

GCC PROSLARI

1. GCC, Java, Ada, FORTRAN, Go və s kimi cingiltili olmağı hədəfləməyən dilləri dəstəkləyir.

2. GCC, bəziləri Clang tərəfindən həyata keçirilməyən bir çox dil uzantısını dəstəkləyir. Məsələn, C rejimində, GCC iç içə funksiyaları dəstəkləyir və strukturlardakı VLA-lara imkan verən uzantıya malikdir.

KLANGIN PROSLARI

  1. Clang daha sürətli və GCC-dən daha az yaddaş istifadə edir.
  2. Clang-ın C ++ dəstəyi bir çox cəhətdən GCC-dən daha uyğundur.
  3. Clang, GCC tərəfindən həyata keçirilməyən bəzi dil uzantılarını dəstəkləyir. Məsələn, Clang ip təhlükəsizliyini və uzadılmış vektor növlərini yoxlamaq üçün atributlar təqdim edir.
  4. Clang əvvəldən son dərəcə aydın və qısa bir diaqnostika (səhv və xəbərdarlıq mesajları) təmin etmək üçün hazırlanmışdır və ifadəli diaqnostikaya dəstək də daxildir.

Beləliklə, bu ikili axtarışdan bir əsas kimi istifadə edərək kompüter proqramlaşdırmasında ən çox istifadə olunan iki dil arasında icra müddətini müqayisə etmək mənim kiçik əyləncəli fəaliyyətimə son qoyur. Ümid edirəm ki, bunu oxumaqla müəyyən biliklər qazandınız və proqramlaşdırma dilini daha yaxşı bir şəkildə seçə biləcəksiniz.

Xoşbəxt oxu!