Почему некоторые из логических операторов такие медленные?

26
задан flodel 22 September 2013 в 01:06
поделиться

1 ответ

Хотя мне очень нравятся ваши методы и я люблю увеличение скорости, к сожалению, они теряют свои способности, когда e1 e2 имеют более сложную структуру, чем вектор.

> dim(a) <- c(1e2, 1e4)
> dim(b) <- c(1e2, 1e4)
> 
> identical(!a, my.not(a))            
[1] FALSE
> identical(a & b, my.and(a, b))       
[1] FALSE
> identical(a | b, my.or(a, b))        
[1] FALSE
> identical(xor(a, b), my.xor(a, b))   
[1] FALSE

СТРУКТУРА / РАЗМЕРНОСТЬ

Логические функции сохраняют структуру и атрибуты, что является дорогостоящим, но имеет ценность.

T <- TRUE; F <- FALSE
A <- matrix(c(T, F, T, F), ncol=2)
B <- matrix(c(T, F, F, T), ncol=2)

> A & B
      [,1]  [,2]
[1,]  TRUE FALSE
[2,] FALSE FALSE

> my.and(A, B)
[1]  TRUE FALSE FALSE FALSE

Обработка NA

Также, как указано в комментариях, NA также необходимо учитывать - то есть, больше накладных расходов.

a <- c(T, F, NA, T)
b <- c(F, NA, T, T)
>     identical(!a, my.not(a))    
[1] TRUE
>     identical(a & b, my.and(a, b))       
[1] FALSE
>     identical(a | b, my.or(a, b))        
[1] FALSE
>     identical(xor(a, b), my.xor(a, b))   
[1] TRUE

АТРИБУТЫ

a <- c(T, F, NA, T)
b <- c(F, NA, T, T)

names(a) <- names(b) <- LETTERS[23:26]

> a & b
    W     X     Y     Z 
FALSE FALSE    NA  TRUE 

> my.and(a, b)
[1] FALSE    NA    NA  TRUE
<час>

Не скорость

Конечно, с учетом всего вышесказанного, ваши функции предлагают невероятное увеличение! Если вы знаете, что вам не нужно беспокоиться о NA и подобных вещах, и вы не заботитесь о структуре, то почему бы просто не использовать их!

16
ответ дан Ricardo Saporta 22 September 2013 в 01:06
поделиться
  • 1
    относительно plaintextoffenders, хорошего сайта, но их " comments" текст раздела едва видим. проверьте это: plaintextoffenders.com/about .. возможно, it' s игра слов?! – Code Monkey 26 December 2012 в 04:41
  • 2
    относительно plaintextoffenders, хорошего сайта, но их " comments" текст раздела едва видим. проверьте это: plaintextoffenders.com/about .. возможно, it' s игра слов?! – Code Monkey 26 December 2012 в 04:41
  • 3
    относительно plaintextoffenders, хорошего сайта, но их " comments" текст раздела едва видим. проверьте это: plaintextoffenders.com/about .. возможно, it' s игра слов?! – Code Monkey 26 December 2012 в 04:41
  • 4
    относительно plaintextoffenders, хорошего сайта, но их " comments" текст раздела едва видим. проверьте это: plaintextoffenders.com/about .. возможно, it' s игра слов?! – Code Monkey 26 December 2012 в 04:41
  • 5
    относительно plaintextoffenders, хорошего сайта, но их " comments" текст раздела едва видим. проверьте это: plaintextoffenders.com/about .. возможно, it' s игра слов?! – Code Monkey 26 December 2012 в 04:41
Другие вопросы по тегам:

Похожие вопросы: