Ver Mensaje Individual
  #37  
Viejo 23/02/16, 10:16:01
Array

[xs_avatar]
WillyWeb WillyWeb no está en línea
Usuario muy activo
 
Fecha de registro: dic 2008
Localización: Hoy aquí y mañana allí
Mensajes: 2,067
Modelo de smartphone: OnePlus 3T | Xiaomi 9T Pro
Tu operador: Vodafone
 Cita: Originalmente Escrito por Caravantes Ver Mensaje
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 Ver Mensaje
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 Ver Mensaje
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.
__________________
Miembro del equipo que promueve el [Subforo de Tasker]

Si das pescado a un hombre hambriento le nutres una jornada. Si le enseñas a pescar le nutrirás toda la vida. (Lao-Tsé - Filósofo chino)
Responder Con Cita
Gracias de parte de: