是否可以使用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中搜索多行代碼塊的示例,但找不到任何代碼塊。在創建我的示例發佈問題時,我想將此解決方案作爲我嘗試的一個示例,並且它最終能夠正常工作。我想,因爲我沒有在網上找到任何現有的例子,它仍然值得發佈。 –