ue01 notebook

This commit is contained in:
Tom
2021-05-20 21:53:23 +02:00
parent 801d428399
commit e9f07c38fb
7 changed files with 363 additions and 1 deletions

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,11 @@
sum1 <- function(m) {
res = 0
for(i in 1:dim(m)[1]) {
for(j in 1:dim(m)[2]) {
res <- res + m[i,j]
}
}
return(res)
}

View File

@@ -0,0 +1,10 @@
sum2 <- function(m) {
res = .C("sum2"
,mtrx=as.double(m)
,m=as.integer(dim(m)[1])
,n=as.integer(dim(m)[2])
,res=as.double(0)
)
return(res$res)
}

View File

@@ -0,0 +1,14 @@
#include <R.h>
dyn.load("sum2.so")
void sum2(double* mtrx, int* m, int* n, double* res)
{
*res = 0;
for(int i=0; i < *n; i++)
{
for(int j=0; j < *m; j++) {
*res += mtrx[j * (*n) + i];
}
}
}

View File

@@ -0,0 +1,19 @@
source("sum1.R")
source("sum2.R")
comp_sum_funcs <- function(sizes){
msizes = c()
times_1 = c()
times_2 = c()
for(i in sizes) {
m <- matrix(rnorm(i^2), i)
times_1 = append(times_1, summary(system.time(sum1(m)))[1])
times_2 = append(times_2, summary(system.time(sum2(m)))[1])
msizes = append(msizes, i)
}
return(data.frame(size=msizes, sum_1 = times_1, sum_2 = times_2))
}