निम्नलिखित पूर्णांक 1
का पहला उदाहरण के स्थान खोजने चाहिए:आर मैच इतना धीमा क्यों है?
array <- rep(1,10000000)
system.time(match(1,array))
यह रिटर्न
user system elapsed
0.720 1.243 1.964
अगर मैं आकार 100
की एक सरणी मैं इस मिल का उपयोग करते हुए एक ही काम के लिए चलाएँ:
user system elapsed
0 0 0
चूंकि यह सब करना चाहिए, सरणी में पहले मान को देखकर और एक मैच लौटने पर, सरणी के आकार के बावजूद लिया गया समय एक लुकअप और तुलना की तुलना में होना चाहिए। यदि मैंने इसे निम्न-स्तरीय भाषा में लिखा है तो सरणी आकार के बावजूद इसे कुछ हद तक घड़ी चक्र (एक माइक्रोसेकंड या कम?) के क्रम में खर्च होंगे। आर में दूसरा क्यों लगता है? ऐसा लगता है कि वह पूरे सरणी के माध्यम से पुनरावृत्त हो रहा है ...
क्या अनावश्यक रूप से निरंतर जारी रखने के बजाए इसके मैच को मिलने के बाद इसे रद्द करने का कोई तरीका है?
यह प्रश्न पढ़ने योग्य हो सकता है: [अधिक कुशल रणनीति जिसके लिए या मिलान करें) (http://stackoverflow.com/questions/16213029/more-efficient-strategy-for-which-or-match/16224331) – thelatemail