
Cita: Originalmente Escrito por
Caravantes
Estás haciendo una pequeña trampa, al menos en lo conceptual. La ordenación ya implica comparar cada elemento del array (bytes#nombre) con todos los demás elementos del array. O sea que, si tienes 1000 archivos, la ordenación ya implica realizar 499500 comparaciones.

No siempre una ordenación necesita tantas comparaciones. El sistema que describes es el menos eficiente (sistema de intercambio). Existen otros sistema mucho más eficientes y relativamente sencillos de implementar, como estos tres: BubbleSort, CocktailSort o QuickSort.

Cita: Originalmente Escrito por
Caravantes
Esto me recuerda algo reciente. Hace unos días, el compañero Cace0353 tenía una tarea Tasker que se demoraba demasiado (12 segundos), pero luego pasó parte de las acciones a javascript y con eso consiguió reducir el tiempo de ejecución a la tercera parte (4 segundos).

Ya he pensado en ello. Tengo pendiente hacer una prueba para ver si merece la pena.

Cita: Originalmente Escrito por
Caravantes
Por ejemplo, podemos (A) ordenar el array mediante un bucle de Tasker que compare cada pareja de elementos y los intercambie de posición si procede. Otra posibilidad es (B) grabar todo el array en un archivo de texto, de forma que cada elemento del array sería una línea del archivo; luego pedirle al sistema operativo que ordene el archivo (en lo que aparentemente sería una sola acción Sort, aunque en realidad Linux haga medio millón de comparaciones), y terminamos leyendo el archivo para cargar otra vez el array con la ordenación ya hecha. Sospecho que la opción B es mucho más eficiente que la A.

No necesitas nada de eso. Tasker ya tiene una acción para ordenar un array que es muy eficiente (Procesar Array). En el caso de los 3700 pares bytes#nombre tarda un par de segundo en mi dispositivo. Puede que la función de ordenación de JavaScript sea un poco más rápida, pero el traspaso de variables Tasker<>JavaScript también lleva un tiempo que se debe tener en cuenta. Lo que dudo mucho es que un script en Bash tarde menos que la acción de Tasker.
Esta tarea se puede optimizar (todavía más), pero no en la ordenación del array. El bucle que obtiene los tamaños de archivo y el que después compara los elementos consecutivos son objetivos mucho más interesantes ... estoy en ello.