Autor Tema: [question performance] cual es mas rápida, ".dll" vrs "clase.vb"  (Leído 4069 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Señores les vengo con una pregunta que ronda mi cabez desde hace mucho tiempo....

pregunto....

una DLL es mas rapida para ejecutar sus comandos internos que una clase agregada al proyecto en si....?¿ ambas en vb.Net 2005!!

dicho de otra manera, imaginense una clase de sumas,

Citar
public class suma
   public sub sumar(valor1,valor2) as long
      return  valor1+valor2
   end sub
end class

ahora... la pregunta dicha de otra manera sería...
si esta clase tal como ta escrita en un archivo extensión .vb agregada al proyecto es mas rápida[para ejecutar el sub sumar], comparada con un projecto del tipo biblioteca de clases donde este la misma clase pero que agregue al proyecto no la clase .vb sino la .dll para sumar? osea, tener el archivo ahí en el proyecto con toda la clase o solo la dll?

me explico....

por favor, ser puntual con tus respuestas.....!!!
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: [question performance] cual es mas rápida, ".dll" vrs "clase.vb"
« Respuesta #1 : agosto 29, 2008, 02:29:35 pm »
Lo mejor seria de hacer un tipo benchmark con alguna funcion matematica recursiva me imagino.

En todo caso la velocidad deberia de ser identica en cuanto a procesamiento, pero tene en cuenta que en el caso de la DLL, esta tiene que ser cargada primero, luego (para el caso de la funcion suma) "valor1" y "valor2" tienen que ser copiados y enviados a la DLL para que al terminar de procesar te devuelva (y otra vez haciendo una nueva copia en memoria de) la respuesta.

Puntualmente las DLL no son concebidas para mejorar la velocidad del codigo, si no para encapsultar funciones reutilizables entre varios programas.

De hecho si buscas la maxima velocidad ni siquiera deberias de estar llamando funciones porque se tiene que realizar una parada (y guardar la posicion) y luego hacer salto en la ejecucion del programa hacia la memoria que contiene el codigo de la funcion, luego retornar a la posicion guarda.

Por eso al menos en C existe algo llamado "_inline" que basicamente copia todo el codigo de la funcion (al momento de compilar el programa) en cada llamada que tenga la funcion en el codigo, de esta forma se evitan dichos saltos (aunque el tamaño del ejecutable obviamente crezca).

Por ultimo y en conclusion, mi consejo es que crees DLLs solo cuando necesites exportar y compartir funciones o procedimientos entre programas.

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: [question performance] cual es mas rápida, ".dll" vrs "clase.vb"
« Respuesta #2 : agosto 29, 2008, 03:31:14 pm »
entiendo tu punto...

pero,
yo me imagino que las .dll podrían ser mas rápidas por el echo mismo de estar encapsuladas, bajo la premisa que tu mencionas, porque al utilizar la función en una clase.vb el programa tiene que hacer una parada e ir a la clase para realizar el código de la función... y la dll no, porque no tiene código en el proyecto, claro, no estoy diciendo que hace magia la dll y por eso da el resultado mas rapido, se que hace los mismos procesos que la clase.vb....

pero como tu dices, hay que hacer un benchmark!!! lo malo es que no tengo tiempo....


alguién mas que aporte de sus conocimientos¿?
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado Juancho

  • The Communiter-
  • *
  • Mensajes: 1311
Re: [question performance] cual es mas rápida, ".dll" vrs "clase.vb"
« Respuesta #3 : agosto 30, 2008, 11:03:06 pm »
Mmm interesante la pregunta tekun. Bueno nunk me e puesto comparar cual es mas rapido o no, pero segun de lo que yo m acuerdo de la teoria no se supone que cuando tiene su aplicacion y el codigo fuente de tal clase. entonces que pasa? Viene y se la pasa al compilador y este genera el lenguaje de maquina en el EXE, ya cuando un programa esta compilado, entonces no m acuerdo muy bn si la clase que tengas siempre al final termina como DLL solamente que incrustada en nuestro exe, por tanto nosotros no la podemos manejar asi no mas.

Lo que decia Vlad tiene mucha razon, si lo que quieres es el maximo rendimiento, no deberias de estar haciendo esa separacion sino que alli mismo en la ejecucion poner eso!

AL final en cual es mejor, si vs anexas una DLL o no, la unica diferencia que yo sepa que las DLL que son de .NET, te deben de trabjar igual, pero las que son Interop o las DLL que son COM, alli si creo q hay diferencia por la forma en que trabajan por tanto tendrias un rendimiento si un poco menor!
<a href="http://www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/" target="_blank">
<img src="http://cache.www.gametracker.com/player/%7BAiPI%7DJuancho/94.127.17.72:11480/b_560x95.png" border="0" width="560" height="95" alt="" />
</a>

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: [question performance] cual es mas rápida, ".dll" vrs "clase.vb"
« Respuesta #4 : septiembre 01, 2008, 10:13:41 am »
el porque de la separación, es porque de esa forma no hago repetitivo mi código.

tengo operaciones, funciones, etc. que necesito en muchos lugares de mi aplicación. por ello creo una clase.. para solo llamar y ejecutar....

incluso, con mis controles personalizados, tienen validaciones que no es correcto poner en cada control de mi aplicación, entonces... he puesto tales validaciones en los controles, ahi me evito estar escribiendo las validaciones en cada frm donde esta mi control.... me explico...

esa es otra razon de mi pregunta... que es mas rápido, que las validaciones las haga mi control .dll o que las validaciones las haga en el frm que esta el control, en el evento validating [por decir algo]....
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re: [question performance] cual es mas rápida, ".dll" vrs "clase.vb"
« Respuesta #5 : septiembre 01, 2008, 10:37:59 am »
La mayoria de validaciones no son operaciones costosas en cuanto a CPU ni memoria, por eso dudo que sentirias una diferencia abismal en hacerlo de una u otra forma.

De todas formas si las validaciones son especificas a un control que reutilices muchas veces en todo tu programa, entonces puede que si valga personalizar un control para incluir dichas validaciones; pero si en total son unos 5 controles (de ese tipo) dudo mucho que saques algo de ganancia en personalizarlos solo para agregar las validaciones  :unsure:

Puedes intentar si quieres, pero te aseguro que la diferencia entre hacerlo de una forma u otra es marginal.

Por cierto, por aqui estaba viendo que el "inline" (al menos en C#) es automaticamente hecho por el compilador, asi que si tus validaciones son pequeñas, podria inclusive suceder que se esten alinieando al momento de compilarse, lo que seria equivalente a que nunca las hubieras separado.

http://blogs.msdn.com/ericgu/archive/2004/01/29/64644.aspx

Desconectado tekun

  • -^- Elite Silver -^-
  • The Communiter-
  • *
  • Mensajes: 3221
  • Han convertido mi casa en cueva de mercaderes!!!!
    • www.tekun.es
Re: [question performance] cual es mas rápida, ".dll" vrs "clase.vb"
« Respuesta #6 : septiembre 01, 2008, 11:24:46 am »
bueno... gracias..

en conclusión, digo que se tardan lo mismo.... :)

:thx:
lo difícil lo hago rápido, con lo imposible, casi siempre me tardo un poquito