Skip to content

Commit b09e26c

Browse files
committed
MatlabOlderThan about 200x faster than isMatlabReleaseOlderThan
1 parent a5fd49f commit b09e26c

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

+stdlib/matlabOlderThan.m

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
11
%% MATLABOLDERTHAN compare Matlab release name only e.g. R2025a
2-
% works back to Matlab R2011b at least
2+
% works for Matlab >= R2016b
3+
%
4+
% our simpler checks is about 200x faster than isMATLABReleaseOlderThan(release)
35

46
function isOlder = matlabOlderThan(release)
57

6-
try
7-
isOlder = isMATLABReleaseOlderThan(release);
8-
catch e
9-
if ~strcmp(e.identifier, 'MATLAB:UndefinedFunction')
10-
rethrow(e)
11-
end
8+
% converting to char about 2x fast as extract*() on string()
9+
% length on char 10+% faster than strlength(string())
10+
r = char(release);
11+
assert(length(r) == 6 && r(1) == 'R', 'Matlab release must be like ''R2025a''')
1212

13-
r = char(release);
14-
assert(length(r) == 6 && r(1) == 'R', 'Release must be a string like ''R2025a''')
13+
curr = version('-release');
1514

16-
curr = version('-release');
15+
if strcmp(curr(1:4), r(2:5))
16+
isOlder = curr(5) < r(6);
17+
else
18+
% string() lessThan comparison about same speed as str2double()
1719
nc = str2double(curr(1:4));
1820
nv = str2double(r(2:5));
19-
if nc == nv
20-
isOlder = curr(5) < r(6);
21-
else
22-
isOlder = nc < nv;
23-
end
21+
isOlder = nc < nv;
2422
end
2523

2624
end

0 commit comments

Comments
 (0)