मैं sample
आर में फ़ंक्शन को बेंचमार्क कर रहा था और इसकी तुलना कर रहा था और igraph:sample_seq
एक अजीब परिणाम में भाग गया।
जब मैं कुछ चलाता हूं:
library(microbenchmark)
library(igraph)
set.seed(1234)
N <- 55^4
M <- 500
(mbm <- microbenchmark(v1 = {sample(N,M)},
v2 = {igraph::sample_seq(1,N,M)}, times=50))
मुझे इस तरह एक परिणाम मिलता है:
Unit: microseconds
expr min lq mean median uq max neval
v1 21551.475 22655.996 26966.22166 23748.2555 28340.974 47566.237 50
v2 32.873 37.952 82.85238 81.7675 96.141 358.277 50
लेकिन जब मैं दौड़ता हूं, उदाहरण के लिए,
set.seed(1234)
N <- 100^4
M <- 500
(mbm <- microbenchmark(v1 = {sample(N,M)},
v2 = {igraph::sample_seq(1,N,M)}, times=50))
मुझे इसके लिए बहुत तेज़ परिणाम प्राप्त हुए हैं sample
:
Unit: microseconds
expr min lq mean median uq max neval
v1 52.165 55.636 64.70412 58.2395 78.636 88.120 50
v2 39.174 43.504 62.09600 53.5715 73.253 176.419 50
ऐसा लगता है कि जब N
10 (या कुछ अन्य विशेष संख्या?) की शक्ति है, sample
तो अन्य छोटे की तुलना में बहुत तेज है N
कि 10 की शक्तियां नहीं हैं। क्या यह अपेक्षित व्यवहार है या मैं कुछ याद कर रहा हूं?