कुछ कोड का अनुकूलन करने की कोशिश करते हुए मैं बस कुछ बेंच मार्किंग किया था और कहा कि strsplit
perl=TRUE
साथ तेजीperl=FALSE
साथ strsplit
चलाने की तुलना में है। उदाहरण के लिए,'strsplit' में 'perl = TRUE' सेटिंग कब काम नहीं करती है (इच्छित या बिल्कुल के रूप में)?
set.seed(1)
ff <- function() paste(sample(10), collapse= " ")
xx <- replicate(1e5, ff())
system.time(t1 <- strsplit(xx, "[ ]"))
# user system elapsed
# 1.246 0.002 1.268
system.time(t2 <- strsplit(xx, "[ ]", perl=TRUE))
# user system elapsed
# 0.389 0.001 0.392
identical(t1, t2)
# [1] TRUE
तो मेरे सवाल (या बल्कि शीर्षक में सवाल का एक परिवर्तन), है क्या तहत परिस्थितियों होगा बिल्कुल जरूरत perl=FALSE
(fixed
और useBytes
मापदंडों बाहर छोड़कर)? दूसरे शब्दों में, हम perl=TRUE
का उपयोग करके क्या नहीं कर सकते हैं जो perl=FALSE
सेट करके किया जा सकता है?
मुझे लगता है कि 'पर्ल = FALSE' सिर्फ एक डिजाइन पसंद है, क्योंकि यह अभी तक कुछ में लागू नहीं किया गया है regex फ़ंक्शन (जैसे 'regexec')। शायद 'perl = TRUE' भविष्य के संस्करणों में डिफ़ॉल्ट मान होगा। – agstudy
@agstudy लाभ को कोर के लिए _extremely_ मजबूर होना होगा क्योंकि इस तरह के डिफ़ॉल्ट को बदलने से मौजूदा कोड का _ton_ टूट जाएगा। – joran
@joran अच्छा बिंदु। लेकिन अगर सभी मामलों में लाभ साबित होते हैं, पीसीआरई के उपयोग को प्रोत्साहित करने के लिए "अच्छी चेतावनी" या "वैश्विक सेटिंग्स" क्यों नहीं जोड़ना है ... – agstudy