Function to compute benchmarked memory allocation with different data sizes for an R expression

asymptoticMemoryUsage(e, data.sizes, max.bytes)

Arguments

e

An expression which is in the form of a function operating on 'N' (as the data size for the algorithm to be tested against for a run), which takes values from the used-supplied parameter data.sizes.

data.sizes

A vector/set of data sizes, which should preferably be a sequence in powers of ten, with mid-values included. Example: data.sizes = 10^seq(1, 4, by = 0.1)

max.bytes

The maximum number of allocated bytes an iteration would be limited upto for the passed expression. (once the limit has been exceeded, further computations on incrementally larger dataset sizes won't be done) Optional, with default value set to 10^6 bytes. (1 Megabyte/MB)

Value

A data frame comprising of the memory usage (in megabytes) computed by bench and the corresponding dataset sizes.

Details

For more information regarding its implementation or functionality/usage, please check https://anirban166.github.io//Memory-usage-quantifier/

Examples

# Memory profiling must be available in the running system: if(capabilities("profmem")) { # Quantifying the memory usage for the allocation of a square matrix (N*N dimensions) # against a set of input data sizes: input.sizes = 10^seq(1, 3, by = 0.1) asymptoticMemoryUsage(matrix(data = N:N, nrow = N, ncol = N), input.sizes) }
#> Memory usage Data sizes #> 1 448 10.00000 #> 2 1200 12.58925 #> 3 1848 15.84893 #> 4 2936 19.95262 #> 5 5048 25.11886 #> 6 7736 31.62278 #> 7 12216 39.81072 #> 8 20048 50.11872 #> 9 31800 63.09573 #> 10 49976 79.43282 #> 11 40048 100.00000 #> 12 125048 125.89254 #> 13 199760 158.48932 #> 14 316856 199.52623 #> 15 504056 251.18864 #> 16 798896 316.22777 #> 17 1267280 398.10717