¿Cómo puedo escribir funciones que sean reutilizables sin sacrificar el rendimiento? En repetidas ocasiones me encuentro con la situación en la que quiero escribir una función de manera que sea reutilizable (por ejemplo, no hace suposiciones sobre el entorno de datos), pero conociendo el flujo general del programa, sé que no es la más eficiente. método. Por ejemplo, si quiero escribir una función que valide un código de inventario pero sea reutilizable, no puedo asumir que el conjunto de registros está abierto. Sin embargo, si abro y cierro el conjunto de registros cada vez que se llama a la función, el rendimiento alcanzado al recorrer miles de filas podría ser enorme.
Entonces, para el rendimiento, podría tener:
Function IsValidStockRef(strStockRef, rstStockRecords)
rstStockRecords.Find ("stockref='" & strStockRef & "'")
IsValidStockRef = Not rstStockRecords.EOF
End Function
Pero para la reutilización necesitaría algo como lo siguiente:
Function IsValidStockRef(strStockRef)
Dim rstStockRecords As ADODB.Recordset
Set rstStockRecords = New ADODB.Recordset
rstStockRecords.Open strTable, gconnADO
rstStockRecords.Find ("stockref='" & strStockRef & "'")
IsValidStockRef = Not rstStockRecords.EOF
rstStockRecords.Close
Set rstStockRecords = Nothing
End Function
Me preocupa que el impacto en el rendimiento de abrir y cerrar ese conjunto de registros cuando se llama desde un bucle en miles de filas / registros sería grave, pero el uso del primer método hace que la función sea menos reutilizable.
¿Qué tengo que hacer?