Skip to content

Commit d35cf45

Browse files
committed
update: sample for listFiles().size vs count().
1 parent 56475e9 commit d35cf45

2 files changed

Lines changed: 53 additions & 1 deletion

File tree

app/src/main/java/com/lazygeniouz/filecompat/example/performance/DirectoryPerformance.kt

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ object DirectoryPerformance {
2424
results += "Fetching only Uris will always be faster (after File)" + "\nBut try fetching the Documents' Names.\n\n"
2525
results += calculateDocumentFileCompatPerformanceWithName(context, uri) + "\n"
2626
results += calculateDocumentFilePerformanceOnlyUri(context, uri) + "\n"
27-
results += calculateDocumentFilePerformanceWithName(context, uri)
27+
results += calculateDocumentFilePerformanceWithName(context, uri) + "\n\n"
28+
29+
results += "=".repeat(48).plus("\n\n")
30+
results += calculateCountVsListSize(context, uri)
2831
return results
2932
}
3033

@@ -141,4 +144,25 @@ object DirectoryPerformance {
141144
return ("DFC Performance (With Names) = ${time}s")
142145
}
143146
}
147+
148+
private fun calculateCountVsListSize(context: Context, uri: Uri): String {
149+
val documentFile = DocumentFileCompat.fromTreeUri(context, uri)
150+
?: return "Failed to access directory"
151+
152+
val dfListSizeTime = measureTimeSeconds {
153+
DocumentFile.fromTreeUri(context, uri)?.listFiles()?.size
154+
}
155+
156+
val dfcCountTime = measureTimeSeconds {
157+
documentFile.count()
158+
}
159+
160+
val dfcListSizeTime = measureTimeSeconds {
161+
documentFile.listFiles().size
162+
}
163+
164+
return "DocumentFile.listFiles().size = ${dfListSizeTime}s\n" +
165+
"DFC count() Performance = ${dfcCountTime}s\n" +
166+
"DFC listFiles().size Performance = ${dfcListSizeTime}s"
167+
}
144168
}

app/src/main/java/com/lazygeniouz/filecompat/example/performance/ProjectionPerformance.kt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.lazygeniouz.filecompat.example.performance
33
import android.content.Context
44
import android.net.Uri
55
import android.provider.DocumentsContract.Document
6+
import androidx.documentfile.provider.DocumentFile
67
import com.lazygeniouz.dfc.file.DocumentFileCompat
78
import com.lazygeniouz.filecompat.example.performance.Performance.measureTimeSeconds
89

@@ -25,6 +26,11 @@ object ProjectionPerformance {
2526

2627
results += "=".repeat(48).plus("\n\n")
2728

29+
// Test 4: count() vs listFiles().size
30+
results += testCountVsListSize(context, uri) + "\n\n"
31+
32+
results += "=".repeat(48).plus("\n\n")
33+
2834
return results
2935
}
3036

@@ -91,4 +97,26 @@ object ProjectionPerformance {
9197
"Time: ${time}s"
9298
}
9399
}
100+
101+
private fun testCountVsListSize(context: Context, uri: Uri): String {
102+
val documentFile = DocumentFileCompat.fromTreeUri(context, uri)
103+
?: return "Failed to access directory"
104+
105+
val dfListSizeTime = measureTimeSeconds {
106+
DocumentFile.fromTreeUri(context, uri)?.listFiles()?.size
107+
}
108+
109+
val dfcCountTime = measureTimeSeconds {
110+
documentFile.count()
111+
}
112+
113+
val dfcListSizeTime = measureTimeSeconds {
114+
documentFile.listFiles().size
115+
}
116+
117+
return "count() vs listFiles().size:\n\n" +
118+
"DocumentFile.listFiles().size = ${dfListSizeTime}s\n" +
119+
"DFC.count() = ${dfcCountTime}s\n" +
120+
"DFC.listFiles().size = ${dfcListSizeTime}s"
121+
}
94122
}

0 commit comments

Comments
 (0)