YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Arabic subtitles

03-13 Container_Performance

03-13 Container_Performance

Get Embed Code
13 Languages

Showing Revision 4 created 02/11/2016 by sp8.

  1. إذن فقد تحدثنا عن كيف يمكن
    للكود أن يكون بطيئًا بسبب نوع

  2. المكونات المادية التي يعمل من خلالها،
  3. هل تذكر مشكلة موضوع التفريع
    الخاص بالعدد ذي الفاصلة العائمة؟
  4. حسنًا، هذا ليس بمشكلة على الإطلاق
    بالنسبة لموضوعنا اليوم.
  5. هناك مجموعة من المشاكل
    التي ما تزال لتقلق بسببها،
  6. وهي أداء الأساسيات (الأوليات)
    في اللغة التي تستخدمها.
  7. ولنأخذ مثالًا على ذلك من
    الخوارزميات الرئيسية مثل الترتيب.
  8. هناك الكثير من الطرق
    التي يمكن الترتيب من خلالها،
  9. وبعضها أفضل من بعض،
    بناءً على الظروف.
  10. مثلًا: خوارزمية الترتيب السريع
  11. أسرع بشكل عام من خوارزمية الفقاعات
    إلا في حالة إذا كان لديك أقل من ألف عنصر
  12. أو كنت تقوم ببحث عن عناصر
    موجودة ضمن قائمة مصنفة كبيرة.
  13. بوجه عام، أفضل طريقة لفعل ذلك
    هي من خلال البحث الثنائي.
  14. لكن وعلى العكس تمامًا يكون العثور
    على الكائنات في صفيف غير مصنف.
  15. الآن وبدلًا عن مقارنة كل كائن
    بالقيمة التي تبحث عنها،
  16. يمكنك استخدام دالة تجزئة (هاش)
    للعثور عليها فورًا.
  17. هذه هي كل القواعد لعلم الحاسوب الحديث
    وبنيات البيانات.
  18. ولحسن الحظ، تقوم اللغات الحديثة
    مثل جافا بتعبئة هذه الحاويات
  19. والخوارزميات نيابة عنك،
    ولذا فأنت لست مضطرًا لإعادة كتابة
  20. 3 دوال تجزئة (هاش) أو دالة الترتيب السريع
    العديد من المرات مجددًا.
  21. لكن دعني أخبرك شيئًا هنا.
  22. خلال سنوات عملي في البرمجة،
  23. وجدت أن المشكلة الوحيدة
    التي تقلل أداء مشروعك بشكل ثابت
  24. لها علاقة بأداء حاويات الكائنات التي
    توفرها اللغة.
  25. أعني، هذا مذهل، أليس كذلك؟
  26. تقوم جافا بتزويدك بتنفيذ
    فئة بيانات اتجاهية
  27. حيث يمكنك دفع وإظهار وإضافة وحذف الكائنات
    حسبما هو ملائم لك،
  28. لكن من أجل الحصول على تلك المرونة،
    لا بد أن تستخدم بنية لقائمة متصلة
  29. بالداخل، والتي يكون لديها
    مجموعة موحدة من سمات الأداء.
  30. وطالما أنك تقوم بالعمل على واجهة
    القائمة فحسب، فستكون سريعة جدًا.
  31. أما إن حاولت الإدراج
  32. أو الحذف في أماكن أخرى، فستقوم بالعودة
    إلى الافتراضي في أسوأ توقيت ممكن.
  33. والفكرة هي أنه بسبب النظام الأساسي
    الذي يزود هذه الحاويات فحسب
  34. ولا يعني هذا أنها هائلة الأداء
  35. بالنسبة لكيفية استخدام
    البرنامج لها في الواقع.
  36. قام جيمس سوثرلاند بنشر سلسلة
    من النقاط المرجعية الصغيرة في أداء
  37. هياكل بيانات محددة
    مقدمة من إطار عمل جافا
  38. واكتشف أن هناك بعض الاختلافات
    في الأداء مقابل التشغيل
  39. والتي يجب أن يعيها الناس.
  40. مثلًا، لقد اكتشف أن أداء جدول هاش
  41. كان أسرع بنسبة 22% من أداء خريطة هاش،
  42. بناءً على كيفية استخدامك للحاويات نفسها.
  43. والفكرة هي كذلك.
  44. هل سبق وقمت بتشخيص
    فئات الحاويات التي تستخدمها في الكود؟
  45. وهل أنت واثق من أنها تستخدم
    الحاوية الأسرع على الإطلاق
  46. لما يقوم به الكود في الواقع؟
  47. مم، أجل، هذا ما كنت أفكر به.
  48. لكن الشيء الجيد هو أنه
    بإمكانك تحقيق شفافية في أداء
  49. تلك الحاويات ببعض التشخيص اليدوي
    لواجهات تمرير الرسائل في الأندرويد.
  50. لذا لنرَ إن كان كود كريس يلتزم بفحصنا.