Rapidez de operaciones entre Integer, Long y Double.

Como quiera que estos últimos días ando trabajando algunos aspectos que hacen relación a los distintos tipos de datos, sobretodo en lo que a la clase Nullable se refiere, me he topado con una referencia a la velocidad de cálculo de operaciones en función del tipo de dato. Y como me ha parecido curiosa, he buscado la manera de poder comparar de manera fácil y rápida la velocidad entre distintos tipos de datos para ver qué valores me daba.

Los tipos de datos a comparar son Integer (Int32), Long (Int64) y Double.

El código que utilizo para comparar tiempos es el siguiente (la variable v cambia entre Integer, Long y Double en cada ejecución):

Dim v As Integer = 0
Dim Begin As Date = Now()

For i As Integer = 1 To 1000000000
    v += 1
Next

Dim Finish As Date = Now()
Debug.Print(Finish.Subtract(Begin).TotalMilliseconds.ToString)

Básicamente no hace más que incrementar el valor de una variable mil millones de veces (¿quién no ha necesitado algo así alguna vez, eh?).

Para un Integer obtengo estos tiempos en tres ejecuciones consecutivas:
3884 - 3890 - 3876

Para un Long obtengo estos otros:
4437 - 4453 - 4444

Y para un Double estos de aquí:
4980 - 4990 - 4990

Pues sí. Realmente un Integer es algo más rápido que los demás en cuanto a velocidad de cálculo (en realidad alrededor de un 20% sobre los resultados de Double, aunque con unas cifras tan insignificantes el resultado nace de por sí algo desvirtuado).

Por último una recomendación personal, puestos a escoger y como cuesta lo mismo una cosa que otra, mejor trabajar con Int16, Int32 o Int64 que con Short, Integer o Long. Son exactamente lo mismo pero la primera sintaxis es exclusiva de Visual Basic, mientras que la segunda hace referencia al .NET Framework y por tanto es común a todos los lenguajes que lo utilizan (incluído el propio Visual Basic).

Tags: , , , , , , , ,

3 Responses to “Rapidez de operaciones entre Integer, Long y Double.”

  1. Albert Mata se atrevió a comentar:

    Por pura torpeza mía en la administración de comentarios (y por culpa también de la ingente cantidad de spam que recibo en forma de comentarios), borré equivocadamente dos aportaciones que se escribieron en este post. Mis disculpas a los que gastaron unos minutos de su tiempo para mejorar el contenido del post sin que sus comentarios se hayan publicado finalmente.

  2. Daniel se atrevió a comentar:

    Estos cálculos de velocidad con los for y tipos de datos los hacía yo en 1986 con el Turbo Pascal. Y a través de los años los seguí haciendo con varias versiones de diferentes lenguajes y las más diversas variantes. Los resultados más rápidos los obtuve siempre con C, excepción hecha del assembler, aunque hace muchos años ya que no lo toco. También lo que hacía en Visual Basic ( 6.0 ) era omitir la i del next y comparar si el bucle for..next era más rápido con o sin la i ( yo creía que era lo mismo, pero sorprendentemente es más rápido cuando no ponía la i ). No obstante, sin perjuicio de lo mencionado, me dí cuenta que estas "mediciones" ya no son igual de útiles que antaño puesto que dependen mucho del procesador que se tenga ( algunos son más eficientes con cálculo numérico que con gráficos, otros son más eficientes con lecturas y escrituras de disco que con accesos y desplazamientos de memoria, etc. ). Además ( yo que escribí un artículo sobre arquitectura RISC allá por 1987... ) noto una desmedida tendencia a imaginar que la informática se resume a Desktops/Laptops y Microsoft/Visual Algo, lo cual no digo que es bueno o malo sino que al menos hasta hace unos 15 años no era así sino más diversificada. Perdón, hice overflow del tema tratado, jé. Saludos.

  3. Albert Mata se atrevió a comentar:

    Nada que perdonar, tu intervención ha sido interesantísima... :-)

Leave a Reply