Publicado el 23/Dic/2005
Actualizado el 23/Dic/2005
Autor: Guillermo 'guille' Som
¿Qué digo si me dicen que C# optimiza mejor el código que VB?
Diles que sí, que tiene razón, ya que en realidad VB no optimiza el código generado, al menos en los casos en que el compilador encuentra código que está mal empleado, por ejemplo incluir una asignación dentro de un bucle que en realidad siempre hace lo mismo, me explico:
Si tienes este código, dónde <expresión> es algo que no cambia durante todo el tiempo que dura el bucle:
' Listado 1 Dim n As Integer For i As Integer = 0 To 10 n = <expresión> ' ... resto del código ... NextEn realidad se podría haber escrito de esta forma:
' Listado 2 Dim n As Integer n = <expresión> For i As Integer = 0 To 10 ' ... resto del código ... NextSi el compilador de C#, se encuentra con un código parecido al del listado 1, generaría el del Listado 2.
Vale, esto es correcto. Visual Basic no haría ese cambio.
El problema, es que es posible que hayamos escrito ese código "a conciencia", para, por ejemplo, hacer una prueba de velocidad en asignaciones, en ese caso, los de C# tendrían que hacer algo diferente dentro del bucle, por ejemplo usar el valor de la variable del bucle para asignar a la variable n. Pero si el programador/desarrollador de C# no sabe que eso ocurre, (algunos no lo saben, porque no te creas que todos los que programan en C# son gurús...), pues dirá que su código es más rápido que el de VB, ya que tardaría menos en ejecutarse.
Moraleja: Intenta escribir el mejor código que puedas (optimizado) para que el compilador no tenga que optimizarlo, así te evitarás problemas, incluso resultados no esperados... bueno, esta moraleja es tanto para los de VB como para los de C#, a los dos porque deben escribir (o intentarlo) siempre código optimizado, y a los de C#, porque a ellos les toca tener más cuidado, ya que su compilador si optimiza, mientras que el de VB no...