字符串匹配比较运算符的速度

时间:2016-10-13 04:16:21

标签: r pattern-matching

我对R中字符串比较的速度感到好奇,当时正确使用!= vs ==,并且想知道他们做了多少快捷方式。

如果我有一个有两个级别的向量,一个频繁出现,另一个很少,(试图增加我想要的效果)。

x <- sample(c('ALICE', 'HAL90000000000'), replace = TRUE, 1000, prob = c(0.05,0.95))

我会假设(如果有快捷方式)操作

x != 'ALICE'

会比以下快得多:

x == 'HAL90000000000'

因为要在后一种情况下检查相等性,我会假设我需要检查每个字符,而前者将被第一个或最后一个字符无效(取决于算法检查哪一方)

但是当我进行基准测试时,它似乎并非如此(在重复试验中它是不确定的,尽管对==操作的偏差很小?),或者这不是公平审判:

> microbenchmark(x != 'ALICE', x == 'HAL90000000000')
Unit: microseconds
                  expr   min     lq    mean median     uq    max neval
          x != "ALICE" 4.520 4.5505 4.61831 4.5775 4.6525  4.970   100
 x == "HAL90000000000" 3.766 3.8015 4.00386 3.8425 3.9200 13.766   100

这是为什么?

编辑:

我假设它是因为它正在进行完整的字符串匹配,但如果是这样,有没有办法让R优化这些?对于匹配长字符串或短字符串所花费的时间的混淆,我没有任何收获,不用担心密码。

0 个答案:

没有答案