ج: كيفية استخدام حزمة microbenchmark لقياس وقت التنفيذ


يمكنك استخدام حزمة microbenchmark في R لمقارنة وقت تنفيذ التعبيرات المختلفة.

يمكنك استخدام بناء الجملة التالي للقيام بذلك:

 library (microbenchmark)

#compare execution time of two different expressions
microbenchmark(
  expression1,
  expression2)
)

يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.

مثال: استخدام microbenchmark() في R

لنفترض أن لدينا إطار البيانات التالي في R الذي يحتوي على معلومات حول النقاط التي سجلها اللاعبون في فرق كرة السلة المختلفة:

 #make this example reproducible
set. seed ( 1 )

#create data frame
df <- data. frame (team=rep(c(' A ', ' B '), each= 500 ),
                 points=rnorm( 1000 , mean= 20 ))

#view data frame
head(df)

  team points
1 A 19.37355
2 A 20.18364
3 A 19.16437
4 A 21.59528
5 A 20.32951
6 A 19.17953

لنفترض الآن أننا نريد حساب متوسط النقاط التي سجلها اللاعبون في كل فريق باستخدام طريقتين مختلفتين:

  • الطريقة الأولى : استخدام التجميع () من Base R
  • الطريقة الثانية : استخدم group_by() و summarise_at() من dplyr

يمكننا استخدام الدالة microbenchmark() لقياس الوقت المستغرق لتنفيذ كل من هذه التعبيرات:

 library (microbenchmark)
library (dplyr)

#time how long it takes to calculate mean value of points by team
microbenchmark(
  aggregate(df$points, list(df$team), FUN=mean),
  df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean))
)

Unit: milliseconds
                                                                    express
                         aggregate(df$points, list(df$team), FUN = mean)
 df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean))
      min lq mean median uq max neval cld
 1.307908 1.524078 1.852167 1.743568 2.093813 4.67408 100 a 
 6.788584 7.810932 9.946286 8.914692 10.239904 56.20928 100 b

تقوم الدالة microbenchmark() بتشغيل كل تعبير 100 مرة وتقيس المقاييس التالية:

  • الحد الأدنى : الحد الأدنى من الوقت اللازم للتنفيذ
  • lq : الربع السفلي (المئوي الخامس والعشرون) من الوقت اللازم لإكماله
  • المتوسط : متوسط الوقت اللازم للتنفيذ
  • الوسيط : متوسط وقت التنفيذ
  • uq : الربع الأعلى (المئوي الخامس والسبعون) من الوقت اللازم للتنفيذ
  • max : الحد الأقصى للوقت المطلوب للتنفيذ
  • neval : عدد المرات التي تم فيها تقييم كل تعبير

عادةً، ننظر فقط إلى متوسط أو متوسط الوقت الذي يستغرقه تنفيذ كل تعبير.

ومن النتيجة يمكننا أن نرى:

  • استغرق الأمر وقتًا متوسطًا قدره 1,852 مللي ثانية لحساب متوسط نقاط الفريق باستخدام الطريقة المعتمدة على R.
  • استغرق الأمر وقتًا متوسطًا قدره 9.946 مللي ثانية لحساب متوسط النقاط لكل فريق باستخدام طريقة dplyr.

وبناء على هذه النتائج، نستنتج أن طريقة R الأساسية أسرع بكثير.

يمكننا أيضًا استخدام الدالة boxplot() لتصور توزيع الأوقات المطلوبة لتنفيذ كل تعبير:

 library (microbenchmark)
library (dplyr)

#time how long it takes to calculate mean value of points by team
results <- microbenchmark(
  aggregate(df$points, list(df$team), FUN=mean),
  df %>% group_by(team) %>% summarise_at(vars(points), list(name = mean))
)

#create boxplot to visualize results
boxplot(results, names=c(' Base R ', ' dplyr '))

تعطي حزمة boxplot الخاصة بـ microbenchmark R

من مخططات الصندوق، يمكننا أن نرى أن طريقة dplyr تستغرق وقتًا أطول في المتوسط لحساب متوسط قيمة النقاط لكل فريق.

ملاحظة : في هذا المثال، استخدمنا الدالة microbenchmark() لمقارنة وقت تنفيذ تعبيرين مختلفين، ولكن يمكنك مقارنة أي عدد تريده من التعبيرات عمليًا.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في R:

كيفية مسح البيئة في R
كيفية مسح كافة المؤامرات في RStudio
كيفية تحميل حزم متعددة في R

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *