输入:
i1,i2,...,in
"or(and(not(i1),i2),xor(i3,i4))"
输出:
o=eval("or(and(not(i1),i2),xor(i3,i4))")
有没有比在MEX函数中模拟Matlab的eval函数更快的方法? MEX eval实际上是否比本机eval更快?如果是,多少次?
答案 0 :(得分:1)
我写道:
i1 = randi([0,1],1,10^6);
i2 = randi([0,1],1,10^6);
i3 = randi([0,1],1,10^6);
i4 = randi([0,1],1,10^6);
(是的,这些向量只有1M个元素,而不是2M)
然后
tic,or(and(not(i1),i2),xor(i3,i4)); toc
给了
Elapsed time is 0.047936 seconds.
我认为你很难使用MEX功能更快地获得结果;我的直觉是,当纯Matlab解决方案抬起并打开冰镇啤酒时,MEX程序仍将醒来。
但我期待被证明是错的,因为我经常这样。
答案 1 :(得分:0)
我已经将eval实现为MEX功能。我在深度为4的随机表达式上测试了它。我的MEX eval比Matlab原生eval快2倍(15.1s vs 31.4s,1000次迭代)