الموضوع للنقاش، و تكملة للمقارنة السابقة في بيئة cli،
لكن هذه المقارنة في بيئة الويب مع خادم apache..
الايجابيات:
* الالتفات عمليا الى سرعة الانجاز مع تطبيقات mod_xxxx في خادم apache2.2
* التجارب بسيطة لكنها شائعة (بالنسبة لي على الاقل) وتعطينا قدرة للتخمين بشكل افضل
* التجربة العملية افضل من الكلام النظري
السلبيات:
* اي benchmark ناقص وبه خلل
* mod_python شبه مهجور والبديل هو mod_wsgi (لكن الفارق بينهم في الكفاءة ليس ملحوظا)
* المقياس الوحيد هو السرعة، ولا يشمل عوامل اخرى مثل استهلاك الذاكرة RAM
* المقارنة تمت مع عدة تطبيقات حسب استخداماتي الشائعة ولا يجوز التعميم
التطبيق:
* الأكواد مأخوذة من المقارنة السابقة.
* الخادم apache 2.2 مع mod_php + mod_perl + mod_python
* عملية قياس الوقت تمت من خارج الخادم لمزيد من الحيادية. الامرين curl و time
نتيجة طباعة نص بتكرار:
mod_php الاسرع، وثم mod_perl وثم بفارق ملحوظ mod_python
هذا عكس ما حصل في اختبارات cli.. اذ ان تطبيق perl كانت الاسرع
وpython بجميع تطبيقاتها كانت بطيئة حتى هنا،
ربما يجعل هذا mod_php تطبيق عملي مثالي للويب حيث عمليات الطباعة كثيرة
admin@hx01 ~ $ time curl -s http://127.0.0.1/test_printloop.php > /dev/null real 0m0.209s user 0m0.015s sys 0m0.032s admin@hx01 ~ $ time curl -s http://127.0.0.1/test_printloop.pl > /dev/null real 0m0.472s user 0m0.011s sys 0m0.035s admin@hx01 ~ $ time curl -s http://127.0.0.1/test_printloop.py > /dev/null real 0m1.285s user 0m0.020s sys 0m0.033s
نتيجة اختبار عمليات رياضية بسيطة:
mod_php الاسرع، وثم mod_perl وثم mod_python
admin@hx01 ~ $ time curl -s http://127.0.0.1/test_simpleMath.php > /dev/null real 0m23.079s user 0m0.005s sys 0m0.002s admin@hx01 ~ $ time curl -s http://127.0.0.1/test_simpleMath.pl > /dev/null real 0m57.061s user 0m0.004s sys 0m0.003s admin@hx01 ~ $ time curl -s http://127.0.0.1/test_simpleMath.py > /dev/null real 1m12.805s user 0m0.006s sys 0m0.003s
نتيجة اختبار bubble sort - كود الشمري:
mod_php الاسرع، وثم mod_perl وثم mod_python
الاختبار يستخدم عمليات بسيطة كالسابق، لذا هذا كان متوقع
admin@hx01 ~ $ time curl -s http://127.0.0.1/test_bubbleShammary.php >> /dev/null real 0m0.202s user 0m0.004s sys 0m0.002s admin@hx01 ~ $ time curl -s http://127.0.0.1/test_bubbleShammary.pl >> /dev/null real 0m0.593s user 0m0.004s sys 0m0.003s admin@hx01 ~ $ time curl -s http://127.0.0.1/test_bubbleShammary.py >> /dev/null real 0m0.722s user 0m0.004s sys 0m0.002s
نتيجة اختبار regular expression:
mod_perl الاسرع، ثم mod_php، وثم بفارق كبير mod_python.
تطبيق mod_php كان اسرع من mod_python لكنه كان ابطأ بكثير من mod_perl
يبدو ان جميع تطبيقات perl على لينكس قوية في regexp.. وكذلك يبدو ان جميع تطبيقات python متخلفة في regexp
admin@hx01 ~ $ time curl -s http://127.0.0.1/test_simpleRegexp.pl > /dev/null real 0m38.170s user 0m0.005s sys 0m0.002s admin@hx01 ~ $ time curl -s http://127.0.0.1/test_simpleRegexp.php > /dev/null real 1m46.635s user 0m0.004s sys 0m0.005s admin@hx01 ~ $ time curl -s http://127.0.0.1/test_simpleRegexp.py > /dev/null real 14m1.796s user 0m0.011s sys 0m0.014s
نتيجة اختبار استخراج prime numbers - كود Ivan Zahariev:
mod_python الاسرع، ثم mod_perl، وثم mod_php.
قريبة من نتائج لاختبار السابق.. mod_python متقدمة بعدد لا بأس به من الثواني
admin@hx01 ~ $ time curl -s http://127.0.0.1/test_primeNums.py >> /dev/null real 1m4.788s user 0m0.006s sys 0m0.003s admin@hx01 ~ $ time curl -s http://127.0.0.1/test_primeNums.pl >> /dev/null real 1m45.043s user 0m0.006s sys 0m0.005s admin@hx01 ~ $ time curl -s http://127.0.0.1/test_primeNums.php >> /dev/null real 1m49.309s user 0m0.006s sys 0m0.006s
سأضيف اختبار استخدام قاعدة بيانات mysql لاحقا.. لانها شائعة جدا
الخلاصة:
* mod_php كانت الاسرع في الطباعة والعمليات الحسابية البسيطة، والتي هي شائعة جدا في تطبيقات الويب.. لذا يبدو انها الفائز
* mod_perl كانت الاسرع في regexp، لديه استخدامات في بعض الحالات مثل استقبال موضوع جديد.. لكنها عملية غير مكررة كثيرا وهذا تفوق غير مفيد كثيرا في الويب
* mod_python.. كانت الاسرع في بعض العمليات الحسابية.. لكنها عمليات نادرة الحدوث في تطبيقات الويب.. كانت بطيئة جدا في عمليات الطباعة
يبدو ان الفائز في تطبيقات الويب هو فعلا mod_php بوضوح
وأن الخاسر الواضح في تطبيقات الويب هو mod_python
و mod_perl عالقة في المنتصف مصيرها غير واضح.
الحالة الوحيدة التي ممكن تفكر في استخدام mod_python للويب:
* انك تحب syntax تبع python ومتعود على مكتباتها
* انك لديك تطبيقات جاهزة في python ولا تريد اعادة البرمجة
سيتضح مصير mod_perl بعد اجراء تجربة قاعدة البيانات مع mysql.. هناك احتمال ان تتعادل مع mod_php
لكن mod_python بطؤها الشديد اخرجها من الدائرة من الآن بوضوح



