分支预测如何精确地影响R?

问题描述 投票:1回答:1

一些参考文献:]

这是此Why is processing a sorted array faster than processing an unsorted array?]的后续内容

标记中唯一与分支预测有些相关的帖子是[Why sampling matrix row is very slow?

问题的解释:

] >>

我正在研究处理排序数组是否比处理未排序数组快(与JavaC中测试的问题相同–第一链接),以查看分支预测是否以相同方式影响R

请看下面的基准示例:

set.seed(128)
myvec <- rnorm(1e8, 128, 128)  #or making a vector with 1e7 elements

myvecsorted <- sort(myvec)

mysumU = 0
mysumS = 0

SvU <- microbenchmark::microbenchmark(
  Unsorted = for (i in 1:length(myvec)) {

    if (myvec[i] > 128) {
      mysumU = mysumU + myvec[i]
    }

  } ,
  Sorted = for (i in 1:length(myvecsorted)) {

    if (myvecsorted[i] > 128) {
      mysumS = mysumS + myvecsorted[i]
    }

  } ,
  times = 10)


ggplot2::autoplot(SvU)

带有1e7个元素的矢量

带有1e8个元素的矢量

问题:
  • 首先,我想知道为什么“ Sorted”向量不是一直都是最快的,并且幅度不如Java所示?

  • 第二,为什么排序的执行时间与未排序的执行时间相比有较大的差异?
  • 一些参考文献:这是对此的后续文章。为什么处理排序数组比处理未排序数组快?我发现r标签中唯一与分支预测有些相关的帖子是...

    r sorting benchmarking branch-prediction
    1个回答
    0
    投票

    解释器开销,而只是[[be]

    解释器,解释了大多数平均差异。我没有较高差异的解释。
    © www.soinside.com 2019 - 2024. All rights reserved.