是否可以使用microbenchmark评估由多行代码组成的代码块?如果是这样,怎么样?用microbenchmark评估多行代码块
例子: 我们有一些数字数据在字符列:
testdata <- tibble::tibble(col1 = runif(1000), col2 = as.character(runif(1000)), col3 = as.character(runif(1000)))
现在,我们可以尝试将这些不同的方式。 我们可以直接调用as.numeric在列:
testdata$col2 <- as.numeric(testdata$col2)
testdata$col3 <- as.numeric(testdata$col3)
我们可以尝试做内dplyr
发生变异:
testdata <- dplyr::mutate(testdata, col2 = as.numeric(col2),
col3 = as.numeric(col3))
或者我们知道的所有列应是数字,所以我们可以尝试一些不太明确,做一些检查:
testdata <- dplyr::mutate_if(testdata, .predicate = is.character, .funs = as.numeric)
现在我们要比较这3个选项的性能。
后面的2个选项是单独的调用,所以这些可以很容易地在microbenchmark中测试,但第一个选项包含两个独立的调用。我们可以将这两个调用包装在一个函数中,然后在microbenchmark中对其进行评估,但这会引入该函数的轻微开销,因此技术上不会评估我们现在的解决方案。我们可以将这些调用分别包含在微基准中,然后将它们相加,因为平均值应该很好,但对于最小值或最大值等情况,这并不一定能给出明智的结果。
microbenchmark文档中的示例大多使用简单的单个表达式,并且通常使用简单的函数来包装代码。
是否可以将多行代码直接输入到microbenchmark中进行评估?
的'{} '是我尝试的第一件事,但在我的实际使用案例中,它没有奏效,于是我花了一些时间在microbenchmark中搜索多行代码块的示例,但找不到任何代码块。在创建我的示例发布问题时,我想将此解决方案作为我尝试的一个示例,并且它最终能够正常工作。我想,因为我没有在网上找到任何现有的例子,它仍然值得发布。 –