Well, you need to copy something initially, the whole point is a about directories with lots of files. But don't worry, i made a task to create 1000 files on any storage:
Create Testfiles (161)
A1: Tasker Function [ Function:ListStorageVolumes(false) ]
A2: JavaScriptlet [ Code:var entries = []
for (i=0; i<path.length; i++)
{
entries[i] = '<b>' + path[i] + '</b> (' + (external[i] == 'true' ? 'ext' : 'int') + ')<br><i>Description:</i> ' + description[i] + '<br><i>Subsystem:</i> ' + ((typeof subsystem !== 'undefined') ? subsystem[i] : 'n/a')
if (uuid[i] != 'undefined')
entries[i] += '<br><i>UUID:</i> ' + uuid[i]
if (can_access[i] != 'true')
entries[i] += '<br><b><i>Not accessible!</i></b>'
} Libraries: Auto Exit:On Timeout (Seconds):45 ]
A3: List Dialog [ Mode:Select Single Item Title:Where to create test files? Items:%entries Selected Items: Long Click Task: Button 1:Cancel Button 2: Button 3: Close After (Seconds):120 Use HTML:On First Visible Index:0 Hide Filter:On Continue Task After Error:On ]
A4: Stop [ With Error:Off Task: ] If [ %ld_selected !Set ]
A5: Variable Set [ Name:%targetdir To:%path(%ld_selected_index)/TestFiles Recurse Variables:Off Do Maths:Off Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A6: Pick Input Dialog [ Type:File Title:Select file Text:Choose file to copy on next screen. Should be at least 1MB. Default Input: ]
A7: Create Directory [ Directory:%targetdir Create All:Off Use Root:Off ]
A8: Flash [ Text:Copying %input to %targetdir/Txxxx... Long:On ]
A9: For [ Variable:%counter Items:1000:1999 Structure Output (JSON, etc):Off ]
A10: Copy File [ From:%input To:%targetdir/T%counter Use Root:Off ]
A11: End For
And with this task you can test the action duration:
Test Copy (122)
A1: Tasker Function [ Function:ListStorageVolumes(false) ]
A2: JavaScriptlet [ Code:var entries = []
for (i=0; i<path.length; i++)
{
entries[i] = '<b>' + path[i] + '</b> (' + (external[i] == 'true' ? 'ext' : 'int') + ')<br><i>Description:</i> ' + description[i] + '<br><i>Subsystem:</i> ' + ((typeof subsystem !== 'undefined') ? subsystem[i] : 'n/a')
if (uuid[i] != 'undefined')
entries[i] += '<br><i>UUID:</i> ' + uuid[i]
if (can_access[i] != 'true')
entries[i] += '<br><b><i>Not accessible!</i></b>'
} Libraries: Auto Exit:On Timeout (Seconds):45 ]
A3: List Dialog [ Mode:Select Single Item Title:Select Storage with test files Items:%entries Selected Items: Long Click Task: Button 1:Cancel Button 2: Button 3: Close After (Seconds):120 Use HTML:On First Visible Index:0 Hide Filter:On Continue Task After Error:On ]
A4: Stop [ With Error:Off Task: ] If [ %ld_selected !Set ]
A5: Variable Set [ Name:%sourcedir To:%path(%ld_selected_index)/TestFiles Recurse Variables:Off Do Maths:Off Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A6: Test File [ Type:Exists Data:%sourcedir Store Result In:%exists Use Root:Off ]
A7: If [ %exists neq true ]
A8: Flash [ Text:Path %sourcedir not found! Long:Off ]
A9: Stop [ With Error:Off Task: ]
A10: End If
A11: Variable Set [ Name:%file1 To:%sourcedir/T1000 Recurse Variables:Off Do Maths:Off Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A12: Variable Set [ Name:%file2 To:%sourcedir/T1999 Recurse Variables:Off Do Maths:Off Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A13: Variable Set [ Name:%target To:TestFiles/Target Recurse Variables:Off Do Maths:Off Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A14: Variable Set [ Name:%tsstart To:%TIMEMS Recurse Variables:Off Do Maths:Off Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A15: Copy File [ From:%file1 To:%target Use Root:Off ]
A16: Variable Set [ Name:%duration_copy1 To:%TIMEMS - %tsstart Recurse Variables:Off Do Maths:On Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A17: Variable Set [ Name:%tsstart To:%TIMEMS Recurse Variables:Off Do Maths:Off Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A18: Copy File [ From:%file2 To:%target Use Root:Off ]
A19: Variable Set [ Name:%duration_copy2 To:%TIMEMS - %tsstart Recurse Variables:Off Do Maths:On Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A20: Variable Set [ Name:%tsstart To:%TIMEMS Recurse Variables:Off Do Maths:Off Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A21: Test File [ Type:Modified Data:%file1 Store Result In:%mtime Use Root:Off ]
A22: Variable Set [ Name:%duration_test1 To:%TIMEMS - %tsstart Recurse Variables:Off Do Maths:On Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A23: Variable Set [ Name:%tsstart To:%TIMEMS Recurse Variables:Off Do Maths:Off Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A24: Test File [ Type:Modified Data:%file2 Store Result In:%mtime Use Root:Off ]
A25: Variable Set [ Name:%duration_test2 To:%TIMEMS - %tsstart Recurse Variables:Off Do Maths:On Append:Off Max Rounding Digits:3 Structure Output (JSON, etc):On ]
A26: Flash [ Text:Copy: %duration_copy1 / %duration_copy2 ms
Get MTime: %duration_test1 / %duration_test2 ms Long:Off ]
On my phone, neither internal nor external SD show s significant difference. But for a microsd attached as OTG with adapter, copying the last file is factor 20 slower, getting the mtime even 200x!
I can also say that a file manager shows no difference, all files copy fast as they should.
And Tasker's internal openn file dialog also takes >1min to show the contents of that created directory on the OTG storage, but no problem for the others. Android even asks whether it should kill Tasker...
Hope that helps!