基本上这个问题说明了一切,我的直觉告诉我,拨打- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
if (application.applicationState == UIApplicationStateActive) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Received a Notification" message:[NSString stringWithFormat:@"My App received notification while it is running:\n%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}
的时间比拨打minmax
然后拨打min
要少。
是否有一些优化我阻止Matlab执行以下代码?
最小最大:
max
https://medium.com/@ipaulpro/drag-and-swipe-with-recyclerview-b9456d2b1aaf
分开min-max:
function minmax_vals = minmaxtest()
buffSize = 1000000;
A = rand(128,buffSize);
windowSize = 100;
minmax_vals = zeros(128,buffSize/windowSize*2);
for i=1:(buffSize/windowSize)
minmax_vals(:,(2*i-1):(2*i)) = minmax(A(:,((i-1)*windowSize+1):(i*windowSize)));
end
end
答案 0 :(得分:6)
您可以看到开销,因为minmax
未完全混淆。只需输入
edit minmax
你会看到这个功能!
似乎存在nntype.data('format',x,'Data');
的数据类型转换,而min
或max
的情况并非如此,而且可能代价高昂。这适用于MATLAB的神经网络(nn)工具,minmax
属于该工具箱。
简而言之,min
和max
是较低级别的已编译的函数(因此它们 完全混淆了),而不是需要来自nn工具箱的功能。
这是一个稍微孤立的基准测试,没有窗口并使用timeit
而不是分析器。 我还提供了minmax
中使用的数据转换的时间安排!测试获取大矩阵中每行的最小值和最大值,请参见下面的输出图和代码。 ..
似乎行数和时间之间存在线性关系(如线性算子所预期的那样),但组合minmax
关系的系数要大得多,与单独的操作相比大约快10倍。此外,您可以清楚地看到数据转换仅花费min
然后max
版本的更多时间!
function benchie()
K = zeros(10, 3);
for k = 1:10
n = 2^k;
A = rand(n, 200);
Arow = zeros(1,200);
m = zeros(n,2);
f1 = @()minmaxtest(A,m);
K(k,1) = timeit(f1);
f2 = @()minthenmaxtest(A,m);
K(k,2) = timeit(f2);
f3 = @()dataconversiontest(A, Arow);
K(k,3) = timeit(f3);
end
figure; hold on; plot(2.^(1:10), K(:,1)); plot(2.^(1:10), K(:,2)); plot(2.^(1:10), K(:,3));
end
function minmaxtest(A,m)
for ii = 1:size(A,1)
m(ii, 1:2) = minmax(A(ii,:));
end
end
function dataconversiontest(A, Arow)
for ii = 1:size(A,1)
Arow = nntype.data('format', A(ii,:), 'Data');;
end
end
function minthenmaxtest(A,m)
for ii = 1:size(A,1)
m(ii, 1) = min(A(ii,:));
m(ii, 2) = max(A(ii,:));
end
end