以下内容应该找到整数1
的第一个实例的位置:
array <- rep(1,10000000)
system.time(match(1,array))
返回
user system elapsed
0.720 1.243 1.964
如果我使用大小为100
的数组运行相同的任务,我会得到:
user system elapsed
0 0 0
由于它应该做的只是查看数组中的第一个值并返回匹配,所以所花费的时间应该是查找和比较的时间,而不管数组的大小。如果我用低级语言编写它,那么无论数组大小如何,它都会花费几个时钟周期(一微秒或更短?)的顺序。为什么R需要一秒钟?它似乎正在遍历整个阵列...
有没有办法让它在找到匹配后中止,而不是继续不必要的迭代?
答案 0 :(得分:9)
原因是R实际上没有进行线性搜索,但它设置了一个哈希表。如果您要搜索多个项目,这是有效的,但如果您只搜索一个数字则不是很有效。以下是该功能的分析:
A&#34;更好&#34;如果要在数组中搜索单个整数,则实现可以使用线性搜索。我想那会更快。