يتم إعطاؤك مقتطف تعليمات برمجية يقيس وقت تنفيذ قسمين مختلفين من التعليمات البرمجية: `times_topk_join_a` و`times_topk_join_b`. يتم تخزين وقت تنفيذ `times_topk_join_a` كقائمة من أرقام الفاصلة العائمة. المتغير `times_topk_join_b` هو أيضًا قائمة بأرقام الفاصلة العائمة التي تخزن وقت تنفيذ `times_topk_join_b`. بالإضافة إلى ذلك، يخزن مقتطف الشفرة طول `number_of_valid_lines` في قائمتين مختلفتين: `number_of_valid_lines_a` و`number_of_valid_lines_b`.

مهمتك هي إكمال الوظيفتين التاليتين:

1. `calculate_average_time(times: List[float]) -> float`: تأخذ هذه الدالة قائمة من أرقام الفاصلة العائمة `times` كمعلمة وترجع متوسط ​​الوقت المحسوب عن طريق جمع كل القيم في القائمة وتقسيمها من خلال عدد العناصر.

2. `compare_execution_times(times_a: List[float], times_b: List[float]) -> str`: تأخذ هذه الوظيفة قائمتين من أرقام الفاصلة العائمة `times_a` و`times_b` كمعلمات. فهو يقارن متوسط ​​وقت التنفيذ لـ `times_a` و`times_b` باستخدام وظيفة `calculate_average_time`. إذا كان متوسط ​​وقت التنفيذ لـ `times_a` أقل من `times_b`، فسيتم إرجاع السلسلة "times_a أسرع". إذا كان متوسط ​​وقت تنفيذ `times_a` أكبر من متوسط ​​`times_b`، فسيتم إرجاع السلسلة "times_b أسرع". إذا كان كلاهما متساويًا، فسيتم إرجاع السلسلة "كلاهما لهما نفس متوسط ​​الوقت".

يمكنك أن تفترض أن قوائم الإدخال غير فارغة.
{"source": "argilla/DistiCoder-dpo-binarized", "kind": "synthetic", "evolved_from": null}