vb6 - una - Mid vs Mid $
substring en visual basic (3)
Honestamente, creo que es insignificante.
Tal vez puedas probar algo como esto. Descargue el "Objeto de temporizador de alto rendimiento" de http://ccrp.mvps.org/ , realice un ciclo largo (1.000.000 de iteraciones más o menos) de operaciones de cadena y mida la diferencia de tiempo de ejecución. Por "operaciones" me refiero a: Concatenación de Variant
s en oposición a la concatenación de String
s. Mid()
y Mid$()
muy probablemente realicen lo mismo. OTOH: puedes probar eso también.
Si lo hiciera, me interesaría si publicara los resultados.
De acuerdo con la documentación en VB6, la función Mid devuelve una variante, pero Mid $ devuelve una cadena y aparentemente esto es más eficiente.
Mis preguntas son:
¿Qué prueba simple puedo usar para discernir la diferencia en el rendimiento? Traté de buscar en la aplicación simple que hizo algunas operaciones de cadena, con Perfmon , pero no había diferencia discernible.
¿Vale la pena preocuparse? He adquirido el hábito de usar las funciones $ -ized, ¿pero debería recomendar a todos en mi equipo que lo utilicen también?
No vale la pena preocuparse. Es un remanente de Microsoft Basic de hace 15-20 años cuando un procesador rápido era de una magnitud mucho más lenta que cualquier otra cosa hoy en día.
Sin embargo, tiene cierto atractivo estético para usar Mid $ en lugar de dejar que VB determine cuáles son sus tipos de datos. Y si tiene algún bucle que lo está ejecutando, digamos, miles de tiems por segundo, entonces su factor de curiosidad podría aumentar. De lo contrario, neh.
Aquí hay un enlace a alguien que midió la diferencia. Mid $ fue aproximadamente 2.5 veces más rápido que Mid. Incluyendo pruebas que se remontan a VB4.
Si bien el rendimiento entre ellos es insignificante, no es realmente un factor diferenciador para usar de todos modos.
Puede haber algunos matices cuando se usa una variante cuando se requiere un tipo fuerte. Por ejemplo, ¿qué sucede cuando pasas una variante a un parámetro que espera una cadena ByRef? Nada malo, pero sucede algo un poco más que pasar una dirección.
Por lo tanto, si usted sabe que desea trabajar con cadenas, siga adelante y use las $ versiones de estas funciones; el comportamiento de ellas y su uso en otras expresiones es más simple y se comprende mejor. Si sabes que necesitas una variante y tus entradas son variantes, entonces seguro que usas las versiones que no son $.