Hola, me gustaría saber una cosa muy simple, pero no encuentro está información en ningún sitio.
¿Que tarda más en realizarse, una comprobación, o setear diréctamente un valor?
Pongo un ejemplo:
' Setear diréctamente:
Private MyPoint As New Point(0, 8)
Private Sub blabla()
MyPoint.X = 257
End Sub
' Comprobar, y si la condición no se cumple, setear:
Private MyPoint As New Point(0, 8)
Private Sub blabla()
If Not MyPoint.X = 257 Then MyPoint.X = 257
End Sub
Quizás también tenga que ver del objeto con el que estemos tratando, por ejemplo quizás una propiedad de un control "pesado" tardaría más en leerse que en diréctamente setear su valor?
Yo me iría a la teoría ...
Stack, Heap, tipos por valor, por referencia (tener en cuenta la interfaz IEquatable), objetos inmutables, etc :P
Saludos
Ala, dices eso y te quedas tan pancho no? xD, te has pasado Novlucker uf... :silbar:
El Heap he buscado lo que es y no lo entiendo. http://en.wikipedia.org/wiki/Heap_%28data_structure%29
Otra cosa que desconocía era la interface IEquatable, que tampoco lo entiendo. http://msdn.microsoft.com/en-us/library/ms131187.aspx
Pero aún juntando esas dos piezas que no entiendo en el puzzle que has hecho, ¿Que quieres decir con todo eso?, no capto la teoría de la que hablas.
Me pregunto que tiene que ver la pila, y el resto de cosas que has mencionado, como por ejemplo si un objeto es de estado inmutable o mutable, ¿con todo esto?, imagino que algo si que tendrá que ver... claro, pero no lo capto, podrías decirlo de una manera más comprensible para mi?.
Saludos!
Por qué no intentas haciendo una pequeña prueba, en donde tengas bloque que estime el tiempo de ejecución del programa, desde su inicio a fin y realices pruebas para estos dos casos.
No entiendo muy bien por qué te surge la duda.
Es más rápido setear un valor.
Pero sería más correcto verificar.
CitarEl Heap he buscado lo que es y no lo entiendo. http://en.wikipedia.org/wiki/Heap_%28data_structure%29
Las variables por valor se almacenan en un sitio, y las por referencia en otro, por lo que el acceso a los datos es diferente ...
http://proyecto-csharp.blogspot.com/2010/07/gestion-de-memoria.html
CitarOtra cosa que desconocía era la interface IEquatable, que tampoco lo entiendo. http://msdn.microsoft.com/en-us/library/ms131187.aspx
Siguiendo con lo anterior y si hablamos de implementar la interfaz IEquatable para el caso los objetos por referencia, no es lo mismo comparar la referencia a un objeto, que tener la implementación de un método para la comparación.
http://msdn.microsoft.com/es-es/library/ms131187(v=vs.80).aspx
Cuando hablaba de los objetos mutables/inmutables, iba puntualmente al manejo que se realiza en memoria, y como se asignan estos, y tiene que ver por ejemplo con el motivo por el cual debemos de utilizar un StringBuilder (o algún método que lo implemente) para concatenar string (inmutable) en .NET, y no "a & b" (VB.NET) o "a + b" (C#) ;)
Saludos
Cita de: Darhius en 8 Agosto 2013, 16:30 PMNo entiendo muy bien por qué te surge la duda.
Hola,
la razón es simple, quiero programar de manera correcta y a ser posible de la manera más eficaz, aunque en este caso busco velocidad antes que eficacia, de ahí la pregunta xD.
CitarPor qué no intentas haciendo una pequeña prueba, en donde tengas bloque que estime el tiempo de ejecución del programa
Codeé hace tiempo un procedimiento para estimar el tiempo mediante un stopwatch, pero lo usaba para instrucciones más largas, no lo he usado para este experimento porque sé que la diferencia va a ser mínima, de unos pocos MS, además antes que fiarme de este tipo de metodos pefiero confiar en la opinión de gente experta que haya estudiado como funcionan por dentro estas comparaciones internas.
Gracias y saludos!