Quicksort + التنميط
سؤال
أحاول ملف تعريف رمز Quicksort. رمز على النحو التالي:
qsort [] = []
qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs)
أرجوك أن تساعدني!
المحلول
على افتراض أنك تستخدم GHC ، يمكنك تمكين التنميط مع -prof
العلم (ربما -auto-all
و -caf-all
لمزيد من التفاصيل).
ثم تقوم بتشغيل برنامجك مع ./a.out +RTS -p
لتوليد نتيجة التنميط في a.out.prof
.
يتضمن الملف الشخصي فقط إجمالي الوقت والذاكرة التي يتم إنفاقها على كل وظيفة. والتي قد لا تكون مناسبة لك ، نظرًا لوجود وظيفة واحدة فقط qsort
. تجميع البرنامج بشكل طبيعي وتشغيل مع ./a.out +RTS -sstderr
قد يكون لديك ما يكفي من المعلومات بالفعل.
يرى
- http://www.haskell.org/ghc/docs/latest/html/users_guide/profiling.html لمزيد من خيارات التنميط في GHC.
- http://book.realworldhaskell.org/read/profiling-and-optimization.html لكيفية تحليل المعلومات المربحة.
لا تنتمي إلى StackOverflow