我要像执行的代码块如下:在矢量搜索是太耗费计算
x = some_number;
y = some_other_number;
u = a_vector_of_numbers;
v = another_vector_of_numbers;
% u and v are of equal size
r1 = ((x == u) | (x == v)); % Expensive!
r2 = ((y == u) | (y == v)); % Expensive!
q = any(r1 & r2);
你可以认为这是:x
和y
都在图中,两个节点,除非我错误,这将检查x
和y
是否使用邻接列表[r1, r2]
连接。换句话说,我想回答这个问题:“是否有这样一个索引i
,x
和y
可以在r1(i)
或r2(i)
?
我需要反复这样做。 r1
和r2
都可能包含多达数千个唯一值(图表上的节点数量约为10 ),并且它们的长度是数十万(边缘的数量约为10 )。
我的配置文件告诉我,我已经注释到的两行代码占用了99%的运行时间,而且我的程序需要相当长的时间才能运行,所以我想知道:还有多少可以优化?最短计算时间的基本限制是什么,以及我有多接近?
另外,将这个特定的代码外包给另一种语言会很容易。这可能会导致显着的性能提升吗?
可以有多个这样的'我'吗?如果是这样,你需要所有的人还是只需要第一个/最后一个? – 2012-02-23 00:33:13
从理论上讲,我的数据中不应该有多于一个这样的'i',因为我的图形是不受指导的。实际上,数据有时很脏。无论如何,我甚至不需要第一个或最后一个 - 我只想知道是否存在这样的“我”。但是如果你的答案依赖于它,可以对'r1' /'r2'做一些预处理,并保证对于任何给定的'x'''''对,这样一个'i'永远不会超过一次。 – Superbest 2012-02-23 10:52:49