function timingTest
numberOfGroups = 25;
elementsPerGroup = 5e5;
groups = repmat(1:numberOfGroups,1,elementsPerGroup)';
data = randn(numel(groups),1);
F = @() groupfilter(data,groups,@(x) mean(x) > 0);
t = timeit(F)
end
function timingGroupfilter
data = (1:5000)';
groups = repelem(1:length(data)/10,10)';
p = randperm(length(data));
data = data(p);
groups = groups(p);
tic
for k = 1:600
G = groupfilter(data,groups,@(x) x == max(x));
end
toc
end
大致的执行时间是:
R2021b:2.32 秒
R2022a:1.00 秒
代码是在运行 Windows 10 的 Intel® Xeon® CPU E5-1650 v4 @ 3.60 GHz 测试系统上通过调用 timingGroupfilter 函数进行计时的。