为什么R substr函数比Python中的切片慢得多?

2024-10-02 12:24:38 发布

您现在位置:Python中文网/ 问答频道 /正文

在试图优化我正在编写的脚本时,我偶然发现了一些让我困惑的东西。在R中,如果我想从字符串中的特定位置抓取1个字符,那么substr函数似乎是我的最佳选择。在python中,使用切片表示法执行相同的操作是有意义的。让我困惑的是,这两种操作的速度有多么不同。我编写了两个测试脚本来展示这一点:

Python中的

import time

test = "testtesttesttesttesttesttest"

startTime = time.time()

result = list()
for i in range(100000):
    result.append(test[19])

stopTime = time.time()

print(stopTime - startTime)

在R:

library(microbenchmark)
test = "testtesttesttesttesttesttest"

testWithSubstr = function() {

  result = character(123456)
  for(i in 1:123456) {
    result[i] = substr(test, 20, 20)
  }

}

print(microbenchmark(testWithSubstr()))

(编辑为使用for循环而不是sapply,以便更好地进行比较,并使用microbenchmark)

Python代码运行速度快了10倍,尽管(据我所知)做了基本相同的事情。为什么会这样


Tags: 字符串intest脚本fortimeresult速度

热门问题