Skip to main content
يوفّر DataStore تحسينات ملحوظة في الأداء مقارنةً بـ pandas في كثير من العمليات. يوضّح هذا الدليل سبب ذلك وكيفية تحسين أحمال العمل لديك.

لماذا DataStore أسرع

1. SQL Pushdown

تُنفَّذ العمليات مباشرةً في مصدر البيانات:

2. استبعاد الأعمدة

لا تُقرأ إلا الأعمدة المطلوبة:

3. التنفيذ الكسول

تُحوَّل عمليات متعددة إلى استعلام واحد:

اختبار الأداء: DataStore مقابل pandas

بيئة الاختبار

  • البيانات: 10 ملايين صف
  • العتاد: حاسوب محمول عادي
  • صيغة الملف: CSV

النتائج

أبرز الاستنتاجات

  1. عمليات GroupBy: DataStore أسرع بما يصل إلى 19.93x
  2. مسارات المعالجة المعقدة: DataStore أسرع بمقدار 5-6x (ميزة SQL pushdown)
  3. عمليات التقطيع البسيطة: الأداء متقارب - والفارق ضئيل
  4. أفضل حالة استخدام: العمليات متعددة الخطوات مع GroupBy/التجميع
  5. Zero-copy: لا يفرض to_df() أي عبء إضافي لتحويل البيانات

متى يكون DataStore هو الخيار الأفضل

التجميعات المكثفة

مسارات المعالجة المعقدة

معالجة الملفات الكبيرة

عمليات على عدة أعمدة


متى يكون pandas منافسًا

في معظم الحالات، يضاهي DataStore أداء pandas أو يتفوق عليه. ومع ذلك، قد يكون pandas أسرع قليلًا في الحالات التالية:

مجموعات بيانات صغيرة (<1,000 صف)

عمليات التقطيع البسيطة

دوال لامبدا مخصّصة بلغة بايثون

مهمحتى في الحالات التي يكون فيها DataStore “أبطأ”، يكون الأداء عادةً مماثلًا لأداء pandas - والفارق لا يكاد يُذكر عمليًا. كما أن مزايا DataStore في العمليات المعقدة تفوق هذه الحالات الطرفية بكثير.للتحكم الدقيق في التنفيذ، راجع إعدادات محرك التنفيذ.

تكامل DataFrame بتقنية zero-copy

يستخدم DataStore تقنية zero-copy لقراءة pandas DataFrames وكتابتها. وهذا يعني:
النتائج الرئيسية:
  • to_df() عمليًا بلا تكلفة - من دون تسلسل أو نسخ للذاكرة
  • إنشاء DataStore من pandas DataFrame يتم فورًا
  • الذاكرة مشتركة بين DataStore وpandas views

نصائح لتحسين الأداء

1. فعِّل وضع الأداء لأحمال العمل المكثفة

بالنسبة إلى أحمال العمل التي تكثر فيها عمليات التجميع ولا تحتاج فيها إلى تنسيق مخرجات pandas الدقيق (ترتيب الصفوف، أعمدة MultiIndex، وتصحيحات نوع البيانات)، فعِّل وضع الأداء لتحقيق أقصى إنتاجية:
التحسّن المتوقع: سرعة أعلى بما يصل إلى 2-8 مرات في أعباء عمل filter+groupby، مع تقليل استخدام الذاكرة عند التعامل مع ملفات Parquet الكبيرة. راجع وضع الأداء للاطلاع على التفاصيل الكاملة.

2. استخدم Parquet بدلًا من CSV

التحسّن المتوقع: قراءة أسرع بمقدار 3-10x

3. نفّذ التصفية مبكرًا

4. حدّد الأعمدة المطلوبة فقط

5. استفد من التجميعات في SQL

6. استخدم الدالة head() بدلًا من الاستعلامات الكاملة

7. العمليات المجمّعة

8. استخدم explain() لتحسين الأداء


تحليل أداء عبء العمل لديك

فعّل تحليل الأداء

تحديد نقاط الاختناق

مقارنة النُّهج


ملخص أفضل الممارسات


دليل اتخاذ القرار السريع

للاختيار التلقائي لأفضل محرك تنفيذ، استخدم config.set_execution_engine('auto') (الافتراضي). لتحقيق أقصى إنتاجية في أعباء عمل التجميع، استخدم config.use_performance_mode(). راجع محرك التنفيذ ووضع الأداء لمزيد من التفاصيل.
آخر تعديل في ٢٣ يوليو ٢٠٢٦