Autor
|
Tema: Comparación sobre el tiempo de ejecución. (Leído 2,554 veces)
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.813
|
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?
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Yo me iría a la teoría ... Stack, Heap, tipos por valor, por referencia (tener en cuenta la interfaz IEquatable), objetos inmutables, etc Saludos
|
|
« Última modificación: 8 Agosto 2013, 15:38 pm por Novlucker »
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.813
|
Ala, dices eso y te quedas tan pancho no? xD, te has pasado Novlucker uf... El Heap he buscado lo que es y no lo entiendo. http://en.wikipedia.org/wiki/Heap_%28data_structure%29Otra cosa que desconocía era la interface IEquatable, que tampoco lo entiendo. http://msdn.microsoft.com/en-us/library/ms131187.aspxPero 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!
|
|
|
En línea
|
|
|
|
1mpuls0
Desconectado
Mensajes: 1.186
|
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.
|
|
|
En línea
|
abc
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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.htmlSiguiendo 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
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.813
|
No 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. Por 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!
|
|
« Última modificación: 8 Agosto 2013, 22:28 pm por EleKtro H@cker »
|
En línea
|
|
|
|
|
|