10 votos

¿Es Visual Basic lo suficientemente rápido para las órdenes de milisegundos?

Tengo una API que para una plataforma de enrutamiento de órdenes que está en visual basic. La frecuencia máxima o las órdenes a los intercambios serán milisegundos, donde se espera que los sistemas subyacentes puedan procesar un máximo de 1 orden por milisegundo.

Generalmente me gustaría escribir en C++ o Java cuando tengo este nivel de velocidad en mente, y tengo un amplio estigma contra visual basic por ser inherentemente más lento.

Pero dado que 1 milisegundo es mucho tiempo en tiempo de ordenador, ¿sigue siendo visual basic lo suficientemente rápido?

El algoritmo leerá la información de las bolsas, calculará algunos números y determinará una orden que enviará a las bolsas.

Estoy estimando una latencia de 120 milisegundos, 1 milisegundo para hacer el cálculo, y luego otros 120 milisegundos de vuelta al intercambio. o menos, por supuesto, pero sé dónde están los ordenadores geográficamente y esto es más o menos lo que debería tardar.

Me gustaría mantener el tiempo de cálculo en 1 milisegundo, esto no es realmente un tramo para visual basic en un ordenador moderno ¿correcto? (la máquina local no va a hacer mucho procesamiento, ya que se alimenta de los datos más relevantes de las empresas de compensación de datos)

14voto

Elias Puntos 101

Todos los lenguajes .NET son perfectamente capaces de competir con la velocidad de C e incluso de FORTRAN. Todo depende de si se utilizan de forma correcta.

1) Tanto Java como .NET tienen tiempos de inicio considerablemente más largos que la mayoría de las aplicaciones nativas. Por lo tanto, tendrá que tener la aplicación en funcionamiento y no iniciarla una y otra vez a petición.

2) La gestión de la memoria es crucial cuando se utilizan pilas gestionadas y si se necesita un rendimiento máximo fiable. Asegúrate de no asignar grandes arrays una y otra vez, ya que esto estresará demasiado a la GC y producirá mayores latencias.

3) Considere el uso de bibliotecas optimizadas. Existen algunas para C#/Visual Basic ( ILNumerics ) y Java (por ejemplo jblas ). Pruebas recientes han demostrado un rendimiento muy bueno para los algoritmos numéricos gestionados en comparación con las implementaciones nativas y otros frameworks.

4) Prueba tu implementación y perfílala. Si estás seguro de que puedes alcanzar el objetivo de rendimiento con una implementación en C, también puedes alcanzarlo con .NET.

7voto

Zack Peterson Puntos 19350

La única forma de averiguarlo es probarlo.

No debería llevar mucho tiempo escribir un código sencillo para simular los cálculos que planeas hacer, y ejecutarlo en un bucle.

Con las versiones actuales de Visual Basic (VB.net), el rendimiento debería ser comparable al de Java en la mayoría de los casos, ya que la tecnología básica (compilar a código intermedio y luego ejecutar un compilador justo a tiempo) es más o menos la misma.

El rendimiento en C o C++ puede ser más rápido. Pero también es posible que no lo sea. La única forma de averiguarlo es probando.

2voto

Josh Brown Puntos 16044

Respuesta corta: Sí. Lo utilizo con frecuencia.

El estigma con respecto a Visual Basic viene de la época, en la que VB5 estaba basado en COM con algunas peculiaridades sucias del lenguaje. Esta vez, VB fue pensado para / en conjunto con las macros de Office. .NET cambió sustancialmente la tecnología detrás del lenguaje, así como eliminó la mayoría de las "peculiaridades" con respecto a la usabilidad. Ahora está a la par con C# y todos los demás lenguajes .NET en cuanto a velocidad de ejecución.

1voto

DShook Puntos 5361

Desde la perspectiva computacional (matemática), VB.net debería ser capaz de competir con Java y C/C++. El único problema posible puede ser la recolección de basura (como en Java). Por lo tanto, no se olvide de establecer recolector de basura tipo servidor y organizar/gestionar cuidadosamente sus estructuras de datos.

1voto

Jon Adams Puntos 8637

VBA no es útil para algoritmos complejos, en el sentido de que 1) la codificación no es eficiente y 2) tiene sus limitaciones en términos de recursos disponibles en la red. Hay que tener en cuenta que ya hay un gran número de entidades activas en el segmento de la alta frecuencia, lo que significa que son sus competidores. Para que los modelos sean adecuados (y para que sean más rápidos que ellos) es necesario disponer de códigos excelentes y eficaces (¡complejos!) optimizados con la aportación de especialistas en informática. Por lo tanto, VBA es un lenguaje demasiado sencillo.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X