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. النسخ الصفري: لا يضيف to_df() أي عبء إضافي لتحويل البيانات

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

عمليات التجميع الثقيلة

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

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

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


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

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

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

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

دوال Lambda مخصّصة في Python

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

تكامل DataFrame بتقنية النسخ الصفري

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

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

1. فعِّل وضع الأداء لأعباء العمل الثقيلة

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

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

التحسّن المتوقع: زيادة سرعة القراءة بمقدار 3 إلى 10 مرات

3. طبّق التصفية مبكرًا

4. اختر فقط الأعمدة المطلوبة

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

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

7. عمليات الدُفعات

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


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

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

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

مقارنة بين الأساليب


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


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

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