94 lines
1.8 KiB
Plaintext
Raw Normal View History

2025-01-12 00:52:51 +08:00
<%@include file="includes/setup.md.rsp"%>
<%@string fcnname="binCounts_subset"%>
<%@string subname="binCounts"%>
<%@meta title="${subname}() benchmarks on subsetted computation"%>
<%@meta author="Dongcan Jiang"%>
<%@meta date="2015-06-04"%>
<%@include file="${header}"%>
# <%@meta name="title"%>
This report benchmark the performance of <%=subname%>() on subsetted computation.
<% for (mode in c("integer", "double")) { %>
## Data type "<%=mode%>"
### Non-sorted simulated data
```r
<%=withCapture({
set.seed(0xBEEF)
nx <- 100e3 # Number of data points
xmax <- 0.01*nx
x <- runif(nx, min = 0, max = xmax)
storage.mode(x) <- mode
str(x)
# Uniformely distributed bins
nb <- 10e3 # Number of bins
bx <- seq(from = 0, to = xmax, length.out = nb+1L)
bx <- c(-1, bx, xmax+1)
# indices for subsetting
idxs <- sample.int(length(x), size = length(x)*0.7)
})%>
```
### Results
<% benchmark <- function() { %>
<% dataLabel <- if (is.unsorted(x)) "unsorted" else "sorted" %>
<% mprintf("%s: %s\n", mode, dataLabel) %>
```r
<%=withCapture({
x_S <- x[idxs]
gc()
stats <- microbenchmark(
"binCounts_x_S" = binCounts(x_S, bx = bx),
"binCounts(x, idxs)" = binCounts(x, idxs = idxs, bx = bx),
"binCounts(x[idxs])" = binCounts(x[idxs], bx = bx),
unit = "ms"
)
})%>
```
<% benchmarkResults(stats, tags=c(mode, dataLabel)) %>
<%
# Sanity checks
n1 <- binCounts(x, idxs = idxs, bx = bx)
n1r <- rev(binCounts(-x, idxs = idxs, bx = rev(-bx), right = TRUE))
stopifnot(identical(n1r, n1))
%>
<% } # benchmark() %>
<% benchmark() %>
### Sorted simulated data
```r
<%=withCapture({
x <- sort(x)
idxs <- sort(idxs)
})%>
```
<% benchmark() %>
<% } # for (mode ...) %>
<%@include file="${footer}"%>
<%---------------------------------------------------------------------------
HISTORY:
2014-06-04
o Created.
---------------------------------------------------------------------------%>