¿Es posible reducir el costo de esta función con un bucle for?

¿Es posible reducir el costo del gas de esta función? Actualmente está en 140k de gas para 20 elementos. (Soy nuevo en solidez)

uint8[1000] public array;

function Test(uint32[] index, uint8[] value) public  {        
    for (uint i=0; i<index.length; i++) {
        array[index[i]] = value[i];
    }
}

Respuestas (1)

¿Ha intentado crear una asignación del índice y el valor en lugar de crear dos matrices separadas? Funcionaría en ciertas situaciones, pero este código no me dice nada.

//Creating the mapping:
mapping(uint32 index => uint8 value) theMap;
//Then when setting the value:
theMap[index] = value;
//Then to get it back:
uint8 value = theMap[index]
Gracias por la sugerencia Gabo. Necesito una función para devolver la matriz completa, así que no creo que funcione una asignación, ¿verdad? Creo que tendré que aceptar el alto costo de la gasolina.
Miraría esta publicación para ver qué te queda mejor: ethereum.stackexchange.com/questions/13167/… . Tienes que tener mucho cuidado al hacer bucles, ya que puedes alcanzar tu límite de gas extremadamente rápido. Tenga en cuenta que hacer bucles mientras realiza pagos también es algo que debe evitarse a toda costa (use el patrón de retiro para eso).