Skip to content

Commit a75ae9e

Browse files
committed
disk_{available,capacity}: speedup
1 parent 2b81baa commit a75ae9e

File tree

6 files changed

+62
-12
lines changed

6 files changed

+62
-12
lines changed

+stdlib/+java/disk_available.m

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
function i = disk_available(file)
22

3-
i = java.io.File(file).getUsableSpace();
4-
if i < 1
3+
try
4+
i = java.io.File(file).getUsableSpace();
5+
if i < 1
6+
i = [];
7+
end
8+
catch e
9+
javaException(e)
510
i = [];
611
end
712

813
i = uint64(i);
14+
915
end

+stdlib/+java/disk_capacity.m

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
function i = disk_capacity(file)
22

3-
i = java.io.File(file).getTotalSpace();
4-
if i < 1
3+
try
4+
i = java.io.File(file).getTotalSpace();
5+
if i < 1
6+
i = [];
7+
end
8+
catch
9+
javaException(e)
510
i = [];
611
end
712

813
i = uint64(i);
14+
915
end

+stdlib/+python/private/disk_usage.m

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@
1515
end
1616

1717
i = uint64(i);
18+
1819
end

+stdlib/disk_available.m

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,26 @@
1616
backend (1,:) string = ["java", "dotnet", "python", "sys"]
1717
end
1818

19-
o = stdlib.Backend(mfilename(), backend);
20-
i = o.func(file);
19+
i = uint64.empty;
2120

22-
b = o.backend;
21+
for b = backend
22+
switch b
23+
case 'dotnet'
24+
i = stdlib.dotnet.disk_available(file);
25+
case 'java'
26+
i = stdlib.java.disk_available(file);
27+
case 'python'
28+
if stdlib.matlabOlderThan('R2022a'), continue, end
29+
i = stdlib.python.disk_available(file);
30+
case 'sys'
31+
i = stdlib.sys.disk_available(file);
32+
otherwise
33+
error("stdlib:disk_available:ValueError", "Unknown backend: %s", b)
34+
end
35+
36+
if ~isempty(i)
37+
return
38+
end
39+
end
2340

2441
end

+stdlib/disk_capacity.m

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,26 @@
1414
backend (1,:) string = ["java", "dotnet", "python", "sys"]
1515
end
1616

17-
o = stdlib.Backend(mfilename(), backend);
18-
i = o.func(file);
17+
i = uint64.empty;
18+
19+
for b = backend
20+
switch b
21+
case 'dotnet'
22+
i = stdlib.dotnet.disk_capacity(file);
23+
case 'java'
24+
i = stdlib.java.disk_capacity(file);
25+
case 'python'
26+
if stdlib.matlabOlderThan('R2022a'), continue, end
27+
i = stdlib.python.disk_capacity(file);
28+
case 'sys'
29+
i = stdlib.sys.disk_capacity(file);
30+
otherwise
31+
error("stdlib:disk_capacity:ValueError", "Unknown backend: %s", b)
32+
end
33+
34+
if ~isempty(i)
35+
return
36+
end
37+
end
1938

20-
b = o.backend;
2139
end

test/TestDisk.m

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ function test_dirs(tc)
4141
methods (Test)
4242

4343
function test_disk_available(tc, Ps, B_disk)
44-
r = stdlib.disk_available(Ps, B_disk);
44+
[r, b] = stdlib.disk_available(Ps, B_disk);
45+
tc.assertEqual(char(b), B_disk)
4546

4647
tc.verifyClass(r, 'uint64')
4748

@@ -54,7 +55,8 @@ function test_disk_available(tc, Ps, B_disk)
5455

5556

5657
function test_disk_capacity(tc, Ps, B_disk)
57-
r = stdlib.disk_capacity(Ps, B_disk);
58+
[r, b] = stdlib.disk_capacity(Ps, B_disk);
59+
tc.assertEqual(char(b), B_disk)
5860

5961
tc.verifyClass(r, 'uint64')
6062

0 commit comments

Comments
 (0)