उत्तर: निष्पादन समय मापने के लिए माइक्रोबेंचमार्क पैकेज का उपयोग कैसे करें


आप विभिन्न अभिव्यक्तियों के निष्पादन समय की तुलना करने के लिए आर में माइक्रोबेंचमार्क पैकेज का उपयोग कर सकते हैं।

ऐसा करने के लिए आप निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं:

 library (microbenchmark)

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

निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस वाक्यविन्यास का उपयोग कैसे करें।

उदाहरण: आर में माइक्रोबेंचमार्क() का उपयोग करना

मान लीजिए कि हमारे पास आर में निम्नलिखित डेटा फ्रेम है जिसमें विभिन्न बास्केटबॉल टीमों के खिलाड़ियों द्वारा बनाए गए अंकों के बारे में जानकारी है:

 #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

अब मान लीजिए कि हम दो अलग-अलग तरीकों का उपयोग करके प्रत्येक टीम के खिलाड़ियों द्वारा बनाए गए औसत अंकों की गणना करना चाहते हैं:

  • विधि 1 : बेस आर से एग्रीगेट() का उपयोग करें
  • विधि 2 : dplyr से Group_by() और summarise_at() का उपयोग करें

हम इनमें से प्रत्येक अभिव्यक्ति को निष्पादित करने में लगने वाले समय को मापने के लिए माइक्रोबेंचमार्क() फ़ंक्शन का उपयोग कर सकते हैं:

 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

माइक्रोबेंचमार्क() फ़ंक्शन प्रत्येक अभिव्यक्ति को 100 बार चलाता है और निम्नलिखित मेट्रिक्स को मापता है:

  • न्यूनतम : निष्पादन के लिए आवश्यक न्यूनतम समय
  • lq : पूरा करने के लिए आवश्यक समय का निचला चतुर्थक (25वाँ प्रतिशतक)।
  • माध्य : निष्पादन के लिए आवश्यक औसत समय
  • माध्यिका : माध्यिका निष्पादन समय
  • uq : निष्पादित करने के लिए आवश्यक समय का ऊपरी चतुर्थक (75वाँ प्रतिशत)।
  • अधिकतम : निष्पादन के लिए आवश्यक अधिकतम समय
  • नेवल : प्रत्येक अभिव्यक्ति का मूल्यांकन कितनी बार किया गया है

आमतौर पर, हम केवल प्रत्येक अभिव्यक्ति को निष्पादित करने में लगने वाले औसत या औसत समय को देखते हैं।

परिणाम से हम देख सकते हैं:

  • आर-आधारित पद्धति का उपयोग करके टीम अंक औसत की गणना करने में औसतन 1,852 मिलीसेकंड का समय लगा।
  • Dplyr विधि का उपयोग करके प्रति टीम औसत अंक की गणना करने में औसतन 9.946 मिलीसेकंड का समय लगा।

इन परिणामों के आधार पर, हम यह निष्कर्ष निकालते हैं कि आधार आर विधि काफी तेज है।

हम प्रत्येक अभिव्यक्ति को निष्पादित करने के लिए आवश्यक समय के वितरण की कल्पना करने के लिए बॉक्सप्लॉट() फ़ंक्शन का भी उपयोग कर सकते हैं:

 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 '))

माइक्रोबेंचमार्क पैकेज बॉक्सप्लॉट आर देता है

बॉक्स प्लॉट से, हम देख सकते हैं कि dplyr विधि प्रति टीम औसत बिंदु मान की गणना करने में औसतन अधिक समय लेती है।

ध्यान दें : इस उदाहरण में, हमने दो अलग-अलग अभिव्यक्तियों के निष्पादन समय की तुलना करने के लिए माइक्रोबेंचमार्क() फ़ंक्शन का उपयोग किया है, लेकिन आप अभ्यास में जितनी चाहें उतनी अभिव्यक्तियों की तुलना कर सकते हैं।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि आर में अन्य सामान्य कार्य कैसे करें:

आर में पर्यावरण को कैसे साफ़ करें?
RStudio में सभी प्लॉट कैसे साफ़ करें
आर में एकाधिक पैकेज कैसे लोड करें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *