Una lista seleccionada de impresionantes libros, cursos, capacitaciones, charlas de conferencias, blogs y los colaboradores de código abierto más inspiradores de .NET.
? Contenidos en Inglés
Libros
- Rendimiento Pro .NET: Optimice sus aplicaciones C # por Sasha Goldshtein, Dima Zurbalev, Ido Flatow (2012)
- Gestión de memoria Pro .NET: para un mejor código, rendimiento y escalabilidad por Konrad Kokosa (2018)
- Benchmarking Pro .NET: El arte de la medición del rendimiento por Andrey Akinshin (2019)
- CLR a través de C # por Jeffrey Richter (2012)
- Programación asincrónica profesional con .NET por Richard Blewett, Andrew Clymer (2013)
- Escritura de código .NET de alto rendimiento por Ben Watson (2018)
- Depuración avanzada de .NET por Mario Hewardt (2009)
- Programación concurrente en Windows por Joe Duffy (2008)
- Ensamblador de .NET IL por Serge Lidin (2014)
- Aplicaciones de la Tienda Windows de alto rendimiento de Brian Rasmussen (2014)
- Personalización de Microsoft® .NET Framework Common Language Runtime por Steven Pratschner (2005)
- Bajo el capó de .NET Memory Management por Chris Farrell y Nick Harrison (2011)
- Concurrencia funcional en .NET por Riccardo Terrell (2018)
Cursos
- Dominar el ajuste del rendimiento de .NET por John Robbins
- Uso eficaz de subprocesos para crear aplicaciones y componentes .NET escalables, receptivos y rápidos por Jeffrey Richter
- Haciendo aplicaciones .NET más rápidas por Sasha Goldshtein
- Hacer aplicaciones .NET aún más rápidas por Sasha Goldshtein
- Midiendo el rendimiento de .NET por Sasha Goldshtein
- Tutorial de PerfView por Vance Morrison
- [Herramientas de desfragmentación: vista de rendimiento](https://channel9.msdn.com/Search?term=”Defrag Tools” %2B “PerfView”#ch9Search) de Vance Morrison
- Codificación de alto rendimiento con .NET Core y C # por Gergely Kalapos
- Herramientas de desfragmentación sobre CLR GC parte 1 parte 2 parte 3 y parte 4 con Maoni Stephens
Sitios de entrenamiento
- Taller de depuración y rendimiento de .NET por SELA (Israel)
- .NET Performance por SELA (Israel)
- Computación asincrónica y composición asincrónica y basada en eventos por SELA (Israel)
- Programación paralela con el TPL por SELA (Israel)
- Solid Async en .NET por Rock Solid Knowledge (Reino Unido)
- Dominar el ajuste del rendimiento de .NET por Wintellect (EE. UU.)
- Dominando .NET Threading por Wintellect (EE. UU.)
Próximas conferencias
- 2021
- Dotnetos – .NET Performance World – ¡Conferencia de dos días dedicada exclusivamente al rendimiento de .NET! (05-06 de octubre de 2021, en línea)
Conferencias anteriores
Ordenado de más nuevo a más antiguo:
- 2020
- Ejecución de la investigación de rendimiento de .NET Core en Linux por Adam Sitnik (20.11.2020, DotNext)
- ¿Qué es tan difícil de fijar? de Maoni Stephens, (28.09.2020, Dotnetos Conference)
- The Art of Tracing de Sebastian Solnica (01.10.2020, Conferencia Dotnetos)
- Mejoras de rendimiento en .NET 5 por Stephen Toub (02.10.2020, Conferencia Dotnetos)
- Superando el propio código C ++ de CoreCLR con elementos intrínsecos de CoreCLR 3.0 por Dan Shechter (10.03.2020, DotNext)
- De ETW a EventPipe por Christophe Nasarre-Soulier (10.03.2020, DotNext)
- 2019
- Lo que la industria del juego me enseñó sobre el rendimiento por Brian Rasmussen, (10.11.2019, Øredev)
- Compilación y ejecución de PHP en .NET Core por Jakub Míšek, (11.10.2019, Conferencia Dotnetos)
- Rendimiento de Ethereum en .NET Core por Tomasz Stanczak, Piotr Gankiewicz, (11.10.2019, Conferencia Dotnetos)
- A ORM o no a ORM por Łukasz Dziekan, (11.10.2019, Conferencia Dotnetos)
- Escribir código libre de asignación en C # por Matt Ellis, (11.10.2019, Conferencia Dotnetos)
- Cliff diving into async en .NET Core y C # 8 por Daniel Marbach, (11.10.2019, Conferencia Dotnetos)
- Pruebas de rendimiento de Andrey Akinshin, (10.10.2019, Conferencia Dotnetos)
- Cómo Entity Framework traduce LINQ hasta SQL por Shay Rojansky, (10.10.2019, Conferencia Dotnetos)
- .NET intrínsecos en CoreCLR 3.0 por Dan Schechter, (10.10.2019, Conferencia Dotnetos)
- The .NET Garbage Collector por Peter Sollich, (10.10.2019, Conferencia Dotnetos)
- Investigación de rendimiento de .NET por Adam Sitnik, (10.10.2019, Conferencia Dotnetos)
- Rendimiento en .NET Runtime por Matt Warren, (10.10.2019, Conferencia Dotnetos)
- Spanification de Adam Sitnik (09.09.2019, Conferencia de actualización de Praga)
- Depuración de escenarios asincrónicos en .NET por Kevin Gosse, Christophe Nasarre (16.08.2019, DotNext)
- Creación de sus propias herramientas de creación de perfiles y diagnóstico con Event Tracing para Windows de Pavel Yosifovich (16.08.2019, DotNext)
- JIT y AOT en CLR por Mei-Chin Tsai (30.07.2019, JVM Language Summit)
- Potente evaluación comparativa en .NET por Adam Sitnik (09.07.2019, Update Conference Prague)
- Novedades para el rendimiento en .NET Core y ASP.NET Core 3.0 por Ben Adams (08.07.2019, evento de verano de .NET Core)
- Ref struct, ref readonly struct, ref return, ref everything! de Konrad Kokosa (04.06.2019, DotNext)
- Creación de aplicaciones adaptables y escalables por Jeffrey Richter (26.03.2019, DotNext)
- Haga su .NET GC personalizado: “por qué” y “cómo” por Konrad Kokosa (18.03.2019, DotNext)
- Amplíe el nuevo WinDbg para crear la herramienta de depuración de sus sueños por Kevin Gosse (18.03.2019, DotNext)
- Ajuste de un tiempo de ejecución para la productividad y el rendimiento por Mei-Chin Tsai (26.02.2019, QCon)
- 2018
- Manipulación eficiente del búfer usando el intervalo de C # 7.2 por Jeffrey Richter (28.11.2018, SPB .NET Meetup)
- Construyendo su propia caja de herramientas de depuración con ClrMD por Christophe Nasarre (28.11.2018, DotNext)
- Metal rayado de Federico Lois (26.10.2018, DotNext)
- PerfView: la última herramienta de rendimiento de .NET de Sasha Goldshtein (27.08.2018, QCon)
- Técnicas avanzadas de depuración de .NET de una investigación del mundo real por Christophe Nasarre y Kevin Gosse (21.08.2018, DotNext)
- Patrones para C # de alto rendimiento por Federico Lois (08.02.2018, DotNext)
- 2017
- Novedades para el rendimiento en .NET Core 2.0 de Ben Adams (2017.11.09, CORESTART 2.0)
- Estado del rendimiento de .NET por Adam Sitnik (2017.07.05, NDC)
- ¡Mira mami, no GC! por Dina Goldshtein (23.03.2017, NDC)
- Exprimiendo el hardware para hacer jugo de rendimiento por Sasha Goldshtein (2017.03.17, DotNext)
- Etiquetas de desbordamiento de pila de ajuste de rendimiento de Marco Cecconi (2017.03.17, DotNext)
- Análisis profundo de subprocesos múltiples de Gael Fraiteur (2017.03.17, DotNext)
- Stack Overflow: ¡se trata de rendimiento! por Marco Cecconi (2017.03.17, DotNext)
- ETW – Monitoree cualquier cosa, en cualquier momento y en cualquier lugar por Dina Goldshtein (2017.03.17, DotNext)
- Excepciones excepcionales en .NET por Adam Sitnik (2017.03.17, DotNext)
- 2016
- PerfView: mida y mejore el rendimiento de su aplicación de forma gratuita por Sasha Goldshtein (2016.11.02, DotNext)
- Los modelos de memoria C ++ y CLR de Sasha Goldshtein (2016.11.02, DotNext)
- Programación de sistemas seguros en C # y .NET por Joe Duffy (2016.08.20, QCon)
- ASP.NET Core Kestrel: aventuras en la construcción de un servidor web rápido por Damian Edwards y David Fowler (2016.08.12, NDC)
- Rendimiento y cómo medirlo por Matt Warren (2016.07.28, ProgSCon)
- Optimizaciones de rendimiento en la naturaleza por Oren Eini (Ayende) (2016.06.23, NDC)
- El vector en su CPU: Explotación de SIMD para un rendimiento superescalar por Sasha Goldshtein (2016.04.19, DotNext)
- Lecciones sobre el rendimiento extremo de .NET por Ben Watson (2016.03.13, QCon)
- Mayor
- Hacer aplicaciones .NET más rápidas por Sasha Goldshtein (2015.10.30, DevWeek)
- El zen de async: mejores prácticas para el mejor rendimiento por Stephen Toub (2011.09.13, compilación)
Blogs
- Maoni Stephens
- Stephen Toub
- Matt Warren
- Andrey Akinshin
- Dan Shechter
- Egor Bogatov
- Oren Eini alias Ayende
- Alexandre Mutel alias xoofx
- Vladimir Sadov
- Adam Sitnik
- Konrad Kokosa
- Kunal Pathak
Colaboradores de código abierto más importantes
- Ben Adams
- Jan Kotas
- Stephen Toub
- Kunal Pathak
- mikedn
- Tanner Gooding
- Vladimir Sadov
- Dan Shechter
- Egor Bogatov
- Federico Andrés Lois
- Konrad Kokosa
- nietras
Herramientas de NET
Benchmarking
- BenchmarkDotNet : potente biblioteca .NET para evaluaciones comparativas.
- NBench : marco de pruebas y evaluación comparativa de rendimiento multiplataforma para aplicaciones .NET.
Perfilado
- Prefix : generador de perfiles liviano gratuito para aplicaciones ASP.NET que muestra todo lo que hace su código en más de 30 bibliotecas comunes
- MiniProfiler : herramienta de creación de perfiles gratuita para aplicaciones .NET con integración de Entity Framework y ASP.Net (Core compatible con ambas versiones)
- dotTrace : generador de perfiles de pago para aplicaciones .NET del equipo JetBrains, incluido en el paquete Resharper Ultimate
- Unchase.FluentPerformanceMeter : biblioteca gratuita de código abierto y multiplataforma .Net Standard 2.0 diseñada para medir el rendimiento del método.
- codetrack : analizador de ejecución y perfilador de rendimiento de .NET gratuito
Métricas de la aplicación
- App Metrics : App Metrics es una biblioteca .NET de código abierto y multiplataforma que se utiliza para registrar y reportar métricas dentro de una aplicación y reporta su estado. Consulte los documentos para obtener más detalles.
Analizadores
- Clr Heap Allocation Analyzer Clr Heap Allocation Analyzer es un analizador de diagnóstico basado en Roslyn que puede detectar la mayoría de las asignaciones en el código en el método local y llamar su atención en Visual Studio.
Artículos
Benchmarking
- Directrices de diseño de Microbenchmark por Adam Sitnik
- El arte de la evaluación comparativa por Matt Warren
- Aventuras en la evaluación comparativa: asignaciones de memoria por Matt Warren
- Micro-Benchmarking hecho mal y por razones equivocadas por Sasha Goldshtein
- Sobre el rendimiento de ‘stackalloc’ y The Large Object Heap por Sasha Goldshtein
- Micro-Benchmarking considerado perjudicial por Sasha Goldshtein
- Sobre la medición del desempeño por Sasha Goldshtein
- Cronómetro bajo el capó de Andrey Akinshin
- DateTime bajo el capó de Andrey Akinshin
- Benchmarking facilitado por Jon Skeet
- Microbenchmarking simple en C # por Jon Skeet
- Adquirir marcas de tiempo de alta resolución
- Ejercicio de rendimiento: Mínimo de Andrey Akinshin
- Ejercicio de rendimiento: División de Andrey Akinshin
- Medición de las mejoras de rendimiento en .NET Core con BenchmarkDotNet (Parte 1) por Andrey Akinshin
- AWS Lambda – Imagen de contenedor .NET Benchmark por İren Saltalı
Rendimiento
- El rendimiento contrarresta el infierno de Criteo Labs
- Reemplace los contadores de rendimiento de .NET por el seguimiento de eventos CLR de Criteo Labs
- Obtenga sesiones de ETW, proveedores y eventos de Criteo Labs
- Supervise los finalizadores, la contención y los hilos de su aplicación con Criteo Labs
- Detectores de eventos CLR en proceso con .NET Core 2.2 de Christophe Nasarre
- Espiar el recolector de basura .NET con TraceEvent por Christophe Nasarre
Investigación
- .NET de alto rendimiento por ejemplo: filtrado del tráfico de bots por Alexandr Nikitin
- RyuJIT y la interminable ThreadAbortException de Criteo Labs
- 9 publicaciones sobre cómo crear su propia caja de herramientas con ClrMD de Criteo Labs
- Hambre de .NET Threadpool y cómo las colas lo empeoran por Criteo Labs
- Desafío para obtener el nombre del proceso un viernes por la tarde por Christophe Nasarre
- En el código administrado confiamos, nuestras batallas recientes con el recolector de basura .NET de Sam Saffron
Serie de depuraciones de Tess Ferrandez
- Todas las demostraciones de depuración de .NET: Hang, Crash, memoria y CPU
- Lector de correo electrónico: necesita ayuda para solucionar problemas de memoria / rendimiento
- Depurar un interbloqueo clásico de ReaderWriterLock con SOSex.dll
- Nuevos comandos en SOS para .NET 4.0 Parte 1
- CPU alta en la aplicación .NET usando un Diccionario genérico estático
- Estudio de caso de .NET Hang: El peligro de bloquear cadenas
- Primer paso para solucionar problemas complejos: defina y delimite su problema correctamente
- Muéstrame la memoria: herramienta para visualizar el uso de la memoria virtual y el uso del montón de GC.
- .NET Memory Leak Reader Correo electrónico: ¿Realmente está “perdiendo” memoria .net?
- Pérdida de memoria de .NET: desechar o no desechar, esa es la cuestión de 1 GB
Optimizaciones JIT
- Alineación de bucles en .NET por Kunal Pathak
- Tutorial de RyuJIT por Carol Eidt
- Optimizaciones JIT de Sasha Goldshtein
- Optimizaciones JIT, Inlining y Despacho de métodos de interfaz (Parte 1 de N) por Sasha Goldshtein
- Optimizaciones JIT, Inlining y Despacho de métodos de interfaz (Parte 2 de N) por Sasha Goldshtein
- Diferencias de rendimiento entre depuraciones y versiones de versiones de Hans Passant
- Inlining agresivo en CLR 4.5 JIT por Sasha Goldshtein
- Optimizaciones Jit: Inlining (I) por David Notario
- Optimizaciones Jit: Inlining (II) por David Notario
- Más sobre inlining… por Eric Gunnerson
- Inline o no Inline: esa es la pregunta de Vance Morrison
- Algunas notas sobre el uso del aprendizaje automático para desarrollar heurísticas integradas por Andy Ayers
- El JIT elimina el código muerto en código depurable por Mkie Stall
- ¿El JIT aprovecha mi CPU? por David Notario
- Desenrollado de pequeños bucles en diferentes versiones JIT por Andrey Akinshin
- RyuJIT CTP5 y desenrollado de bucle por Andrey Akinshin
- RyuJIT RC y plegado constante de Andrey Akinshin
- Una historia sobre JIT-x86 inlining y starg por Andrey Akinshin
- LegacyJIT-x86 y primera llamada al método de Andrey Akinshin
- ¿Afectan los archivos PDB al rendimiento? por John Robbins
- ¿Qué hace el conmutador de optimización? por Eric Lippert
- Izar en .NET explicado (parte 1) por Alexandr Nikitin
- Ejemplos de elevación en .NET (parte 2) por Alexandr Nikitin
Refs
- Los retornos de referencia no son indicadores de Vladimir Sadov
- punteros gestionados por Vladimir Sadov
- Las variables locales no pueden ser devueltas por referencia por Vladimir Sadov
- Reglas de devolución segura para devoluciones de árbitros por Vladimir Sadov
- ¿Por qué los locales de referencia permiten solo un enlace? por Vladimir Sadov
- devoluciones de referencia y lugareños por Adam Sitnik
Threading
- Introducción a System.Threading.Channels por Stephen Toub
- Preguntas frecuentes de ConfigureAwait por Stephen Toub
- Subprocesamiento en C # por Joseph Albahari
Memoria
- Infraestructura GC Perf – Parte 1 por Maoni Stephens
- Infraestructura GC Perf – Parte 0 por Maoni Stephens
- La historia de las configuraciones de GC por Maoni Stephens
- Detalles de la implementación de la finalización por Maoni Stephens
- Una forma portátil de obtener eventos de GC en proceso y sin privilegios de administrador con 10 líneas de código (y la capacidad de habilitar / deshabilitar eventos dinámicamente) por Maoni Stephens
- Mejora de la configuración de CPU para GC en máquinas con> 64 CPU por Maoni Stephens
- Ejecución con Server GC en un escenario de contenedor pequeño Parte 1 – Límite estricto para el montón de GC por Maoni Stephens
- Ejecución con Server GC en un escenario de contenedor pequeño Parte 0 por Maoni Stephens
- Nunca debería ver esta pila de llamadas en la producción de Maoni Stephens
- Punto intermedio entre el servidor y la estación de trabajo GC por Maoni Stephens
- Agrupación de arreglos grandes con ArrayPool de Adam Sitnik
- Tipos de valor frente a tipos de referencia por Adam Sitnik
- Span por Adam Sitnik
Intrínsecos de CPU de .NET
- Vectorización usando API .NET por Kunal Pathak
- Intrínsecos de hardware en .NET Core por Tanner Gooding
- Exploración de los elementos intrínsecos de la plataforma .NET Core: Parte 1: Aceleración de SHA-256 en ARMv8 por Nemanja Mijailovic
- Exploración de los elementos intrínsecos de la plataforma .NET Core: Parte 2: Aceleración del cifrado AES en ARMv8 por Nemanja Mijailovic
- Explorando los elementos intrínsecos de la plataforma .NET Core: Parte 3: Ver el código generado por el JIT por Nemanja Mijailovic
- Exploración de los elementos intrínsecos de la plataforma .NET Core: Parte 4: Alineación y canalización por Nemanja Mijailovic
- .NET Core 3.0 intrínsecos en la vida real – 1/3 por damageboy
- Intrínsecos de .NET Core 3.0 en la vida real – 2/3 por damageboy
- Intrínsecos de .NET Core 3.0 en la vida real – 3/3 por damageboy
- Matriz diezmadora Ordena con AVX2 – 1 / ∞ por damageboy
- Matriz diezmadora Ordena con AVX2 – 2 / ∞ de damageboy
- Matriz diezmadora Ordena con AVX2 – 3 / ∞ de damageboy
Mejoras de rendimiento en .NET Core
- Mejoras en el rendimiento de Regex en .NET 5 por Stephen Toub
- Mejoras de rendimiento en .NET 5.0 por Stephen Toub
- Mejoras de rendimiento en .NET Core 3.0 por Stephen Toub
- Mejoras de rendimiento en .NET Core 2.1 por Stephen Toub
- Mejoras de rendimiento en .NET Core por Stephen Toub
ARM64
- API de intrínsecos de hardware Arm64 en .NET – Parte 6 por Kunal Pathak
- API de intrínsecos de hardware Arm64 en .NET – Parte 5 por Kunal Pathak
- API de intrínsecos de hardware Arm64 en .NET – Parte 4 por Kunal Pathak
- API de intrínsecos de hardware Arm64 en .NET – Parte 3 por Kunal Pathak
- API de intrínsecos de hardware Arm64 en .NET – Parte 2 por Kunal Pathak
- API de intrínsecos de hardware Arm64 en .NET – Parte 1 por Kunal Pathak
- Optimizaciones de mirilla en .NET por Kunal Pathak
- Barreras de memoria en ARM64 por Kunal Pathak
- Rendimiento ARM64 de .Net Core 5 por Kunal Pathak
Fuente: Awesome List Github