C مقابل C ++ مقابل C ++ 14 (مقارنة وقت التشغيل)

أثناء البرمجة ، في بعض الأحيان قد تكون عالقًا في وضعك كما هو الحال عند اختيارك القيام بهذا السؤال في C و C ++ أو C ++ 14 ، ثم يأتي العامل الحاسم في وقت التشغيل وقدرة البرنامج على التكيف مع التغييرات في المستقبل . هنا C ++ ، C ++ 14 لها ميزة تفوق C لأنها لها وظائف فائقة التعريف في مكتبتها تسمى Standard Template Library المعروفة شعبيا باسم STL والتي هي عبارة عن مجموعة من فئات قوالب C ++ لتوفير هياكل وبيانات بيانات البرمجة الشائعة مثل القوائم والمكدسات ، المصفوفات ، الخ إنها مكتبة من فئات الحاويات والخوارزميات والتكرارات التي توفر الكثير من الوقت من خلال توفير هياكل البيانات المختلفة للمبرمج في نقرة واحدة.

الفرق الرئيسي بين C و C ++ هو أن C هي لغة برمجة إجرائية ولا تدعم الفئات والكائنات ، بينما C ++ هي مزيج من كل من لغة البرمجة الإجرائية والموجهة ؛ لذلك يمكن أن يسمى C ++ لغة مختلطة.

الآن وصلنا إلى النقطة ، ربما تكون قد سمعت أن C ++ أبطأ من C لكن هل شاهدت الإحصائيات؟ بعد إجراء تعديلات طفيفة في البرنامج ، يمكننا تشغيل برنامج C ++ في نفس الوقت أو في بعض الأحيان أسرع من برنامج مطابق مكتوب بلغة C. لقد قمت هنا بسؤالين على "البحث الثنائي" ، ثم قمت بترميزهما في C و C ++ و C ++ 14 ثم قارنت وقتهما.

إذا كنت تستخدم cin / cout بشكل عام في C ++ ، فقد يكون التعديل التالي مفيدًا جدًا. فقط قم بتضمينه في بداية البرنامج واستخدمه بشكل رئيسي وأنت على ما يرام.

يمكنك أن تجد ما تقوم به هنا.

Q1. لغز الصابون

إنه سؤال بحث ثنائي عام يتم فيه تقديم استعلامات q ويتعين علينا البحث الثنائي q عدد المرات على العناصر n ومعرف التعقيد O (Q * Log (N)) حيث لا توجد N في العناصر في المصفوفة.

يمكنك العثور على الحل هنا.

هذا هو ما حصلت عليه عند ترميزه وتشغيله في حالات اختبار كبيرة.

مدة تشغيل Q1 باستخدام G ++ 5.4.0

يمكنك أن ترى بوضوح أن C أسرع بكثير من C ++ 14 ولكن الشيء الذي يجب ملاحظته هو أنه عند استخدام هذا التعديل (دفعة) ، يمكن أن نرى بوضوح أن C ++ 14 و C ++ يتفوق على C في وقت تنفيذها (في حالة حالات اختبار كبيرة).

Q2. بدء تطوير اللعبة

هذا هو السؤال السهل المتوسط ​​الذي يتضمن إجراء عمليات بحث ثنائية N على صفيف ثنائي الأبعاد مع صفوف N وأعمدة M ومن ثم العثور على الحد الأدنى من الإجابة التي تم الحصول عليها في كل صف وهو إجابتنا النهائية. اتضح أن التعقيد هو O (Nlog (M)).

الحل يمكن العثور عليها هنا.

الآن أصبح ترميزه على 3 لغات مختلفة هو ما حصلت عليه:

مدة تشغيل Q2 باستخدام G ++ 5.4.0

هنا أيضًا يمكن للمرء أن يرى بوضوح أن C يتفوق على C ++ 14 ، لكن باستخدام هذا التعديل ، يكون C ++ أسرع من C.

حتى أن البعض يستخدم getchar () غير مؤمّن (على الرغم من أنه يحتوي على تسرب أمني) ، وهو الأسرع بين كل هذه الأشياء حيث يقرأ ويكتب مباشرةً باستخدام السجل الذي يتخطى التدفقات بينه (يستخدم فقط إذا كان الوقت مصدر قلق كبير). في بعض الأحيان تكون الحدود الزمنية للأسئلة صارمة لدرجة أن هذه التعديلات تلعب قاعدة مهمة ، وبدونها قد يحصل المرء على TLE.

المترجم يلعب أيضا دورا حاسما. اثنان منهم G ++ 5.4.0 و CLANG. المحول البرمجي عبارة عن برنامج كمبيوتر (أو مجموعة من البرامج) يقوم بتحويل التعليمات البرمجية المصدر المكتوبة بلغة برمجة (اللغة المصدر) إلى لغة كمبيوتر أخرى (اللغة الهدف) ، وغالبًا ما تحتوي الأخيرة على نموذج ثنائي يُعرف برمز الكائن. المترجم الذي يمكن القيام بهذه المهمة بشكل أسرع سيكون أفضل.

بروز دول مجلس التعاون الخليجي

1. يدعم مجلس التعاون الخليجي اللغات التي لا تهدف clang ، مثل Java و Ada و FORTRAN و Go وما إلى ذلك.

2. يدعم مجلس التعاون الخليجي العديد من الامتدادات اللغوية ، وبعضها لا يتم تطبيقه بواسطة Clang. على سبيل المثال ، في الوضع "C" ، يدعم مجلس التعاون الخليجي الوظائف المتداخلة وله امتداد يسمح لـ VLAs في الهياكل.

بروز من كلانج

  1. Clang أسرع بكثير ويستخدم ذاكرة أقل بكثير من GCC.
  2. يتوافق دعم Clang لـ C ++ مع دعم دول مجلس التعاون الخليجي من نواح كثيرة.
  3. يدعم Clang العديد من الامتدادات اللغوية ، بعضها غير مطبق من قبل مجلس التعاون الخليجي. على سبيل المثال ، يوفر Clang سمات للتحقق من سلامة مؤشر الترابط وأنواع المتجهات الممتدة.
  4. تم تصميم Clang منذ البداية لتوفير تشخيصات واضحة وموجزة للغاية (رسائل خطأ وتحذير) ، وتتضمن دعمًا للتشخيصات التعبيرية.

بهذا يختتم نشاطي المرح الصغير بمقارنة وقت التنفيذ بين لغتين الأكثر استخدامًا في برمجة الكمبيوتر باستخدام البحث الثنائي كمحور. آمل أن تكون قد اكتسبت بعض المعرفة عن طريق قراءة هذا وسوف تكون قادرة على اختيار لغة البرمجة بطريقة أفضل.

قراءة سعيدة !