NumExpr.

مقيم تعبير التعبير العددي السريع لبيتثون و Numpy.
التحميل الان

NumExpr. الترتيب والملخص

الإعلانات

  • Rating:
  • رخصة:
  • MIT/X Consortium Lic...
  • السعر:
  • FREE
  • اسم الناشر:
  • David M. Cooke, Tim Hochberg, Francesc Alted, Ivan Vilata
  • موقع ويب الناشر:
  • http://code.google.com/u/david.m.cooke/

NumExpr. العلامات


NumExpr. وصف

مقيم تعبير التعبير العددي السريع ل Python و Numpy. NumExpr عبارة عن مكتبة بيثون تقوم بتقييم تعبيرات صفيف متعددة المشغل عدة مرات أسرع من NUMPY. يقبل التعبير كسلسلة، ويحلل ذلك، وإعادة كتابةه بشكل أكثر كفاءة، ويؤدي إلى ذلك إلى كود بيثون أسرع على الطاير. إنه أفضل شيء التالي لكتابة التعبير في C وتجميعه بمجموع مترجم متخصص فقط (JIT)، أي أنه لا يتطلب مترجما في وقت التشغيل. لماذا يكون عملا هما متطرفين لتقييم التعبير عن الصفيف. يمكن تشغيل كل عملية ثنائية بشكل منفصل عبر عناصر الصفيف وإرجاع صفيف مؤقت. هذا هو ما يفعله Numpy: 2 * يستخدم A + 3 * B ثلاثة صفائف مؤقتة كبيرة مثل أو ب. هذه الاستراتيجية نفايات الذاكرة (مشكلة إذا كانت الصفائف كبيرة). ليس أيضا استخداما جيدا لذاكرة ذاكرة التخزين المؤقت لوحدة المعالجة المركزية لأن نتائج 2 * A و 3 * B لن تكون في ذاكرة التخزين المؤقت للإضافة النهائية إذا كانت الصفائف كبيرة. غير متطرف غير متطرف للحلاقة على كل عنصر: لأني في Xrange (Len (a)): c = 2 * a + 3 * b هذا يحفظ الذاكرة وهو جيد لذاكرة التخزين المؤقت، ولكن على كل تكرار، يجب على Python التحقق من نوع كل معامل وحدد الروتين الصحيح لكل عملية. كل ما سوى إهالة بعض الشيكات الأولى، حيث أن صفيفات الإدخال غير متغيرة. يستخدم NumexPR نهجا بينهما. يتم التعامل مع المصفوفات في قطع (أول تمرير يستخدم 256 عنصرا). كصورة بيثون، يبدو الأمر مثل هذا: لأني في Xrange (0، Len (A)، 256): R0 = A r1 = b مضاعفة (R0، 2 ، R2) اضرب (R1، 3، R3) إضافة (R2، R3، R2) C = r2the 3-more anvent of Add () يخزن النتيجة في الوسيطة الثالثة، بدلا من تخصيص جديد مجموعة مصفوفة. هذا يحقق توازن جيد بين ذاكرة التخزين المؤقت والتنبؤ الفرعي. يتم كتابة الجهاز الظاهري بالكامل في C، مما يجعلها أسرع من Python أعلاه. لمزيد من المعلومات حول NumExpr، اقرأ نظرة عامة على NumExpr النموذجي الذي كتبه المؤلف الأصلي (David M. Cooke). إكسسوارات الاستخدام بسيطة: >>> استيراد Numpy As NP >>> استيراد NumExpr as ne >>> a = np.arange (1e6) # اختيار صفائف كبيرة للأداء العالي >>> B = NP.arange (1E6) >>> NE. 1 ") # # تعبير تعبير بسيط () >>> NE.EVALU (A * B-4.1 * A> 2.5 * b ') # أكثر تعقيدا onearray (، DTYPE = BOOL) وسريع ...: - ) >>> Timeit A ** A ** 2 + B ** 2 + 2 * A * B10 حلقات، أفضل من 3: 33.3 MS لكل حلقة >>> Timeit Ne.eval الجامعي ("A ** 2 + B ** 2 + 2 * A * B ") 100 حلقات، أفضل من 3: 7.96 MS لكل حلقة # 4.2x أسرع من متطلبات Numpy: بيثون numpy.


NumExpr. برامج ذات صلة