Cuando el lenguaje si importa

Cuando el lenguaje si importa Cuando el lenguaje si importa Rendimiento de software financiero J. Daniel Garcia Grupo ARCOS Universidad Carlos III de

2 downloads 132 Views 2MB Size

Recommend Stories


Cuando lo que importa es asegurar el control
Cuando lo que importa es asegurar el control Aplicaciones realizadas con Glifosato más el agregado de SpeedWet Maxion Vs. Sulfato de amonio. Evaluaci

Cuando Dios habla en el lenguaje de signos
Cuando Dios habla en el lenguaje de signos Entrevista con Luigi Cortesi, sacerdote dedicado a la pastoral de sordos ROMA, (ZENIT.org).- Traducir la B

TU VIDA IMPORTA, MAMA
TU VIDA IMPORTA, MAMA D EVOCIONALES DE LA S EMANA MADRE. Personas que moldean la vida de otros por la eternidad. Cada uno de nosotros tenemos una. Des

Story Transcript

Cuando el lenguaje si importa

Cuando el lenguaje si importa Rendimiento de software financiero J. Daniel Garcia Grupo ARCOS Universidad Carlos III de Madrid

11 de mayo de 2016

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

1/27

Cuando el lenguaje si importa

Aviso c Esta obra está bajo una Licencia Creative Commons b e

d

cb e d –

Atribución-NoComercial-SinDerivar 4.0 Internacional. Debes dar crédito en la obra en la forma especificada por el autor o licenciante. El licenciante permite copiar, distribuir y comunicar públicamente la obra. A cambio, esta obra no puede ser utilizada con fines comerciales — a menos que se obtenga el permiso expreso del licenciante. El licenciante permite copiar, distribuir, transmitir y comunicar públicamente solamente copias inalteradas de la obra – no obras derivadas basadas en ella.

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

2/27

Cuando el lenguaje si importa ARCOS@uc3m

1

ARCOS@uc3m

2

Altas prestaciones en finanzas

3

Rendimiento

4

Conclusiones

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

3/27

Cuando el lenguaje si importa ARCOS@uc3m

Grupo ARCOS ARCOS: Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas. Computación y Entrada/Salida de Altas Prestaciones. Big Data. Sistemas ciberfísicos. Modelos de programación para la mejora de aplicaciones.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

4/27

Cuando el lenguaje si importa ARCOS@uc3m

Grupo ARCOS ARCOS: Grupo de Arquitectura de Computadores, Comunicaciones y Sistemas. Computación y Entrada/Salida de Altas Prestaciones. Big Data. Sistemas ciberfísicos. Modelos de programación para la mejora de aplicaciones.

Reengineering and Enabling Performance and poweR of Applications. 2013–2016. cb e d –

REfactoring Parallel Heterogeneous Resource-Aware Applications. 2015–2018.

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

4/27

Cuando el lenguaje si importa Altas prestaciones en finanzas

1

ARCOS@uc3m

2

Altas prestaciones en finanzas

3

Rendimiento

4

Conclusiones

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

5/27

Cuando el lenguaje si importa Altas prestaciones en finanzas

The free lunch is over

Fuente: Herb Sutter. http://www.gotw.ca/publications/concurrency-ddj.htm

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

6/27

Cuando el lenguaje si importa Altas prestaciones en finanzas

¿Qué significa rendimiento? Computación de altas prestaciones: Reducir el tiempo de ejecución de una tarea. Ejemplos: Computación científica, simulaciones, análisis de datos . . .

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

7/27

Cuando el lenguaje si importa Altas prestaciones en finanzas

¿Qué significa rendimiento? Computación de altas prestaciones: Reducir el tiempo de ejecución de una tarea. Ejemplos: Computación científica, simulaciones, análisis de datos . . .

Computación de baja latencia: Minimizar el retraso entre entrada y salida. Ejemplos: Voz sobre IP, juegos online, . . .

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

7/27

Cuando el lenguaje si importa Altas prestaciones en finanzas

Lenguajes en finanzas No hay un único lenguaje de programación. Lenguajes dinámicos frente a estáticos. Con y sin máquina virtual. Procedimientales, orientados a objetos, genéricos, funcionales, . . .

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

8/27

Cuando el lenguaje si importa Altas prestaciones en finanzas

Lenguajes en finanzas No hay un único lenguaje de programación. Lenguajes dinámicos frente a estáticos. Con y sin máquina virtual. Procedimientales, orientados a objetos, genéricos, funcionales, . . .

Lenguajes con alta demanda: Python: 6.8 candidatos/puesto. C++: 8.5 candidatos/puesto. C#: 10.7 candidatos/puesto. Java: 15.3 candidatos/puesto. SQL: 16.7 candidatos/puesto. HTML 5: 23.4 candidatos/puesto. Fuente: http://news.efinancialcareers.com, diciembre 2015

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

8/27

Cuando el lenguaje si importa Altas prestaciones en finanzas

Uso de C++ por sectores

Fuente: www.jetbrains.com, julio 2015

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

9/27

Cuando el lenguaje si importa Altas prestaciones en finanzas

Finanzas cuantitativas Modelos matemáticos de mercados financieros.

Areas de aplicación: Gestión de activos. Gestión de riesgos. Fijación de precios de derivados. ...

Necesidad: Altas prestaciones.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

10/27

Cuando el lenguaje si importa Altas prestaciones en finanzas

Negociación de alta frecuencia High Frequency Trading: Negociación de intercambio de valores financieros. Altamente cuantitativa y algorítmica. Posiciones mantenidas durante breves periodos. Posciones saldadas al final del día.

Necesidad: Baja latencia.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

11/27

Cuando el lenguaje si importa Rendimiento

1

ARCOS@uc3m

2

Altas prestaciones en finanzas

3

Rendimiento

4

Conclusiones

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

12/27

Cuando el lenguaje si importa Rendimiento Gestión de memoria

3

Rendimiento Gestión de memoria Programación genérica Concurrencia y paralelismo

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

13/27

Cuando el lenguaje si importa Rendimiento Gestión de memoria

Gestión de recursos C++ is my favorite garbage collected language because it generates so little garbage. Bjarne Stroustrup

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

14/27

Cuando el lenguaje si importa Rendimiento Gestión de memoria

Memoria dinámica Gestión de memoria dinámica altamente personalizable. Co-existencia de mútliples allocators.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

15/27

Cuando el lenguaje si importa Rendimiento Gestión de memoria

Memoria dinámica Gestión de memoria dinámica altamente personalizable. Co-existencia de mútliples allocators.

Semántica de movimiento. Eliminación eficiente de temporales. Reduce la necesidad de memoria dinámica.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

15/27

Cuando el lenguaje si importa Rendimiento Gestión de memoria

Memoria dinámica Gestión de memoria dinámica altamente personalizable. Co-existencia de mútliples allocators.

Semántica de movimiento. Eliminación eficiente de temporales. Reduce la necesidad de memoria dinámica.

smart pointers: Reducen problemas tradicionales con el uso de punteros.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

15/27

Cuando el lenguaje si importa Rendimiento Programación genérica

3

Rendimiento Gestión de memoria Programación genérica Concurrencia y paralelismo

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

16/27

Cuando el lenguaje si importa Rendimiento Programación genérica

Clases de polimorfismo Hay dos tipos de polimorfismo: estático y dinámico.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

17/27

Cuando el lenguaje si importa Rendimiento Programación genérica

Clases de polimorfismo Hay dos tipos de polimorfismo: estático y dinámico. Polimorfismo dinámico: Selección de implementación en tiempo de ejecución. Sobrecoste en tiempo de ejecución. Mecanismo: Herencia y enlace dinámico de funciones.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

17/27

Cuando el lenguaje si importa Rendimiento Programación genérica

Clases de polimorfismo Hay dos tipos de polimorfismo: estático y dinámico. Polimorfismo dinámico: Selección de implementación en tiempo de ejecución. Sobrecoste en tiempo de ejecución. Mecanismo: Herencia y enlace dinámico de funciones.

Polimorfismo estático: Selección de implementación en tiempo de ejecución. En muchísimos casos ofrece flexibilidad suficiente sin sobrecoste. Mecanismo: Programación genérica.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

17/27

Cuando el lenguaje si importa Rendimiento Programación genérica

Programación genérica Permite expresar tipos y funciones de forma genérica. Abre la puerta a nuevas optimizaciones (std::sort() más rápido que qsort()).

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

18/27

Cuando el lenguaje si importa Rendimiento Programación genérica

Programación genérica Permite expresar tipos y funciones de forma genérica. Abre la puerta a nuevas optimizaciones (std::sort() más rápido que qsort()).

Permite una forma mínima de programación funcional. Simplifica funciones de orden superior (que toman funciones). Uso de expresiones lambda.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

18/27

Cuando el lenguaje si importa Rendimiento Programación genérica

STL Parte de la bilbioteca estándar del lenguaje. Contenedors, iteradores y algoritmos.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

19/27

Cuando el lenguaje si importa Rendimiento Programación genérica

STL Parte de la bilbioteca estándar del lenguaje. Contenedors, iteradores y algoritmos.

Contenedores: Estructuras de datos.

Iteradores: Definen secuencias de valores y permiten recorrerlas.

Algoritmos: Expresados en términos de iteradores.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

19/27

Cuando el lenguaje si importa Rendimiento Concurrencia y paralelismo

3

Rendimiento Gestión de memoria Programación genérica Concurrencia y paralelismo

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

20/27

Cuando el lenguaje si importa Rendimiento Concurrencia y paralelismo

Concurrencia Modelo de programación multi-hilo portable. Abstracciones clásicas: thread, mutex, condition_variable. Eliminación de ruido sintáctico (ya no necesito casts). Definición de un modelo de memoria abstracto.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

21/27

Cuando el lenguaje si importa Rendimiento Concurrencia y paralelismo

Concurrencia Modelo de programación multi-hilo portable. Abstracciones clásicas: thread, mutex, condition_variable. Eliminación de ruido sintáctico (ya no necesito casts). Definición de un modelo de memoria abstracto.

Mecanismo simplificado de transferencia entre hilos Tanto de valores como de excepciones.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

21/27

Cuando el lenguaje si importa Rendimiento Concurrencia y paralelismo

Concurrencia Modelo de programación multi-hilo portable. Abstracciones clásicas: thread, mutex, condition_variable. Eliminación de ruido sintáctico (ya no necesito casts). Definición de un modelo de memoria abstracto.

Mecanismo simplificado de transferencia entre hilos Tanto de valores como de excepciones.

Modelos de consistencia relajada de memoria.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

21/27

Cuando el lenguaje si importa Rendimiento Concurrencia y paralelismo

Paralelismo Mejor aprovechamiento de los recursos hardware.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

22/27

Cuando el lenguaje si importa Rendimiento Concurrencia y paralelismo

Paralelismo Mejor aprovechamiento de los recursos hardware.

A diversos niveles. Paralelismo de datos dentro de CPU. Uso de GPU como acelerador (ej. Thrust). Paralelismo entre nodos de un clúster.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

22/27

Cuando el lenguaje si importa Rendimiento Concurrencia y paralelismo

Baja latencia Limitación de construcciones que afecta a la latencia. Memoria dinámica: Uso de preasignación, memory pools, ... Impacto de excepciones: alternativas.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

23/27

Cuando el lenguaje si importa Rendimiento Concurrencia y paralelismo

Baja latencia Limitación de construcciones que afecta a la latencia. Memoria dinámica: Uso de preasignación, memory pools, ... Impacto de excepciones: alternativas.

Estructuras de datos libres de cerrojos. Acceso concurrente sin necesidad de sincronización bloqueante. Basadas en modelos de consistencia no secuencial.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

23/27

Cuando el lenguaje si importa Rendimiento Concurrencia y paralelismo

Evolución

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

24/27

Cuando el lenguaje si importa Rendimiento Concurrencia y paralelismo

Evolución

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

24/27

Cuando el lenguaje si importa Conclusiones

1

ARCOS@uc3m

2

Altas prestaciones en finanzas

3

Rendimiento

4

Conclusiones

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

25/27

Cuando el lenguaje si importa Conclusiones

Conclusiones The free lunch is over. Mi lenguaje no puede ignorarlo.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

26/27

Cuando el lenguaje si importa Conclusiones

Conclusiones The free lunch is over. Mi lenguaje no puede ignorarlo.

Rendimiento: Computación de altas prestaciones: Finanzas cuantitativas. Computación de baja latencia: Negociación de alta frecuencia.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

26/27

Cuando el lenguaje si importa Conclusiones

Conclusiones The free lunch is over. Mi lenguaje no puede ignorarlo.

Rendimiento: Computación de altas prestaciones: Finanzas cuantitativas. Computación de baja latencia: Negociación de alta frecuencia.

C++ altamente usado en altas prestaciones y/o baja latencia.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

26/27

Cuando el lenguaje si importa Conclusiones

Conclusiones The free lunch is over. Mi lenguaje no puede ignorarlo.

Rendimiento: Computación de altas prestaciones: Finanzas cuantitativas. Computación de baja latencia: Negociación de alta frecuencia.

C++ altamente usado en altas prestaciones y/o baja latencia. Finanzas y banca los sectores en los que más se usa C++.

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

26/27

Cuando el lenguaje si importa Conclusiones

Conclusiones The free lunch is over. Mi lenguaje no puede ignorarlo.

Rendimiento: Computación de altas prestaciones: Finanzas cuantitativas. Computación de baja latencia: Negociación de alta frecuencia.

C++ altamente usado en altas prestaciones y/o baja latencia. Finanzas y banca los sectores en los que más se usa C++. Mútliples características enfocadas a mejora de prestaciones. cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

26/27

Cuando el lenguaje si importa Conclusiones

Cuando el lenguaje si importa Rendimiento de software financiero J. Daniel Garcia Grupo ARCOS Universidad Carlos III de Madrid

11 de mayo de 2016

cb e d –

J. Daniel Garcia – ARCOS@UC3M ([email protected])

Twitter @jdgarciauc3m

27/27

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.