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

如果要在数组中搜索单个整数,"更好"的实现可以使用线性搜索.我想那会更快.
| 归档时间: |
|
| 查看次数: |
673 次 |
| 最近记录: |