Dado que tengo una matriz ENORME, y un valor de ella. Quiero obtener el índice del valor en el conjunto. ¿Hay alguna otra forma, en lugar de llamar al Array#index
para obtenerlo? El problema proviene de la necesidad de mantener enormes cantidades y llamar al Array#index
muchísimas veces.Obtener índice del elemento de matriz más rápido que O (n)
Después de un par de intentos me encontré con que el almacenamiento en caché índices dentro de los elementos de almacenamiento de estructuras con (value, index)
campos en vez del valor en sí da un paso enorme en el rendimiento (20x veces ganan).
Todavía me pregunto si hay una forma más conveniente de encontrar el índice de elemento sin almacenamiento en caché (o hay una buena técnica de almacenamiento en caché que aumentará el rendimiento).
más rápido si la matriz es muy larga – Kevin
Dependiendo de su caso de uso, esto podría ser problemático si hay valores duplicados. El método descrito anteriormente devolverá el equivalente o #rindex (última aparición de valor) Para obtener resultados equivalentes a #index, lo que significa que el hash devolverá el primer índice del valor que necesitaría para hacer algo en la línea de inversión la matriz antes de crear el hash y luego restar el valor del índice devuelto de la longitud total de la matriz inicial: 1. # (array.length - 1) - hash ['b'] – ashoda
¿No es la conversión en hash? ¿A tiempo? Supongo que si va a usarse más de una vez, la conversión hash será más eficiente. pero para un solo uso, ¿no es diferente luego de iterar a través de la matriz? – ahnbizcad