Skip to content

Commit 4bbca69

Browse files
committed
windows: disk{available,capacity}: 4x faster with .NET
1 parent ee6f062 commit 4bbca69

File tree

3 files changed

+23
-20
lines changed

3 files changed

+23
-20
lines changed

+stdlib/disk_available.m

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
%% DISK_AVAILABLE disk available space (bytes)
2-
% requires: mex or java
2+
% optional: mex
33
%
44
% example: stdlib.disk_available('/')
55
%
@@ -10,10 +10,14 @@
1010
d {mustBeTextScalar}
1111
end
1212

13-
f = javaFileObject(d).getUsableSpace();
14-
15-
f = uint64(f);
13+
f = uint64(0);
14+
if ~stdlib.exists(d), return, end
1615

16+
if ispc()
17+
f = System.IO.DriveInfo(stdlib.absolute(d)).AvailableFreeSpace();
18+
else
19+
f = javaFileObject(d).getUsableSpace();
20+
f = uint64(f);
1721
end
1822

1923
%!assert (disk_available('.') > 0)

+stdlib/disk_capacity.m

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
%% DISK_CAPACITY disk total capacity (bytes)
2-
% requires: mex or java
2+
% optional: mex
33
%
44
% example: stdlib.disk_capacity('/')
55

@@ -8,9 +8,15 @@
88
d {mustBeTextScalar}
99
end
1010

11-
f = javaFileObject(d).getTotalSpace();
11+
f = uint64(0);
12+
if ~stdlib.exists(d), return, end
1213

13-
f = uint64(f);
14+
if ispc()
15+
f = System.IO.DriveInfo(stdlib.absolute(d)).TotalSize();
16+
else
17+
f = javaFileObject(d).getTotalSpace();
18+
f = uint64(f);
19+
end
1420

1521
end
1622

test/TestDisk.m

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,12 @@
44
Ps = {".", "", "not-exist"}
55
end
66

7-
methods(Test, TestTags = ["mex"])
8-
9-
function test_mex_disk_available(tc)
10-
tc.assertTrue(stdlib.is_mex_fun("stdlib.disk_available"))
11-
end
12-
13-
function test_mex_disk_capacity(tc)
14-
tc.assertTrue(stdlib.is_mex_fun("stdlib.disk_capacity"))
15-
end
16-
17-
end
18-
19-
methods (Test, TestTags = ["java"])
7+
methods (Test)
208

219
function test_disk_available(tc, Ps)
2210

11+
tc.assumeTrue(ispc() || stdlib.has_java() || stdlib.is_mex_fun("stdlib.disk_available"))
12+
2313
zero = uint64(0);
2414

2515
if stdlib.exists(Ps)
@@ -29,8 +19,11 @@ function test_disk_available(tc, Ps)
2919
end
3020
end
3121

22+
3223
function test_disk_capacity(tc, Ps)
3324

25+
tc.assumeTrue(ispc() || stdlib.has_java() || stdlib.is_mex_fun("stdlib.disk_capacity"))
26+
3427
zero = uint64(0);
3528

3629
if stdlib.exists(Ps)

0 commit comments

Comments
 (0)