200 likes | 414 Views
Student Technology Conference 2005. .NET Performanzanalyse und Optimierung Matej Ciesko. .NET Performanzanalyse und Optimierung. Matej Ciesko SSP – Microsoft Academic Program Microsoft Deutschland GmbH i-macies@microsoft.com. Moore’s Law.
E N D
Student Technology Conference 2005 .NET Performanzanalyse und OptimierungMatej Ciesko
.NET Performanzanalyse und Optimierung • Matej Ciesko • SSP – Microsoft Academic Program • Microsoft Deutschland GmbH • i-macies@microsoft.com MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Moore’s Law Anzahl der Transistoren verdoppelt sich alle 18 Monate Intel Corp. MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Microsoft .NET Framework Web Services User Interface Data and XML ADO.NET XML ... ... Base Classes Common Language Runtime Agenda Operating System Hardware MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Ziele • WAS ? • WO ? • WIE ? MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Definitionen Performanz:“Performanz (aus engl. Performance) bezeichnet in der Informatik die Effizienz von Programmen und Hardware bezüglich des Ressourcenverbrauchs und der Qualität der Ausgabe.” [Wikipedia] Optimierung:“Optimizing is the process of changing a program or the environment in which it runs to improve its performance.“ • Problem identifizieren. • Problem evaluieren. • Optimierungstechnik anwenden. MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Hardware • Speicher • “Branch Predictions” • Nebenläufigkeit Itanium2 McKinley MS.NET – Performanzanalyse und Optimierung Matej Ciesko
2. Profiling Profiling:Präzise Messung (von Zeit/ Clock Ticks) von Hardware und/Software um Aussagen über das Laufzeitverhalten von Applikation treffen zu können. • Hardwarezähler • Windows API and Tools • .NET Profiling und Tools • Demos MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Hardware Counters I • Hardware Counters+ Sehr hohe zeitliche Auflösung • CPU Profiling Hardware • Ereignisdetektoren (event detectors) • Ereigniszähler (event counters) • Performanzereignisse : • Speicher • Pipeline Stalls • Brach Prediction • Ressource Utilization MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Hardware Counters II RDTSC – Read Time Stamp Counter RDPMC – Read Performance Monitor Counter Beispiel: RDTSC(ReadTime Step Counter) __int64 getTick(){ __int64 tmp; void *_ptr = &tmp; _asm{ rdtsc; mov ebx, _ptr; mov dword ptr[ebx], eax; mov dword ptr[ebx+4], edx; } return tmp; } • >2 x CPU • SpeedStep MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Windows Performance API • Access performance counters through Windows API • WMI - Windows Management Instrumentation BOOL QueryPerformanceCounter( LARGE_INTEGER *lpPerformanceCount );BOOL QueryPerformanceFrequency( LARGE_INTEGER *lpPerformanceCount ); DWORD_PTR SetThreadAffinityMask( HANDLE hThread, DWORD_PTR dwThreadAffinityMask ); MS.NET – Performanzanalyse und Optimierung Matej Ciesko
.NET Profiling MS.NET 1.1[DllImport("Kernel32.dll")] private static extern bool QueryPerformanceCounter(out long _count); MS.NET 2.0 using System.Diagnostics; … Stopwatch _sw = new Stopwatch(); _sw.Start(); do something _sw.Stop(); _sw.ElapsedTime; // TimeSpan _sw.ElapsedMilliseconds; //long _ws.ElapsedTicks; //long PerfmonWMI MS.NET – Performanzanalyse und Optimierung Matej Ciesko
.NET Profiling Services set Cor_Enable_Profiling = 0x1 set Cor_Profiler={FA0C6E77-AFF4-…992C} COM – Schnittstellen: ICorProfilerCallback ICorProfilerInfo CLR Cor_Enable_Profiling = TRUE _myProfiler CoCreateInstance ICorProfilerCallback::Initialize Demo AP MS.NET – Performanzanalyse und Optimierung Matej Ciesko
.NET 1.1. vs .NET 2.0 • SciMark • (SOR), Monte-Carlo Quadrat, Sparse Matrix Multiplikation, LU Matrix Dekomposition 400 300 MFLOP 200 100 0 1.0 2.0 1.1 HW: 3.2 GHz Pentium 4 (Northwood), 1x CPU, HT disabledIntel 875P Chipset, 1 GB RAMhttp://rotor.cs.cornell.edu/SciMark MS.NET – Performanzanalyse und Optimierung Matej Ciesko
.NET 1.1. vs .NET 2.0 • Linpack 1000x1000 400 300 MFLOP 200 100 0 Mono 1.1.3 .NET 1.1 Debug 1.0 2.0 1.1 HW: 3.2 GHz Pentium 4 (Northwood), 1x CPU, HT disabledIntel 875P Chipset, 1 GB RAMhttp://rotor.cs.cornell.edu/SciMark MS.NET – Performanzanalyse und Optimierung Matej Ciesko
C# vs. C HW: 2.4GHz Pentium 4, 1 GB RAM MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Rotor Microsoft Shared Source CLI - „Rotor“ • ECMA-334 (C#) • ECMA-335 (Common Language Infrastructure) • Microsoft Windows® XP • FreeBSD SSCLI: www.sscli.net MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Zusammenfassung • “Performance Engineering” • 1. Messen: Sind Performanzanforderungen erfüllt? JA • 2. NEIN: Finde langsamen Code • Eigener Code? – Optimieren. • Framework Methode? – Weglassen, Alternative suchen. • Nicht ersetzbarer Aufruf? – Optimieren, Alternative suchen. MS.NET – Performanzanalyse und Optimierung Matej Ciesko
© 2003-2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. MS.NET – Performanzanalyse und Optimierung Matej Ciesko
Mehr Informationen • http://www.microsoft.com/perf • http://msdn.microsoft.com • http://www.thespoke.de • http://www.dotnetperformance.com/ • RDTSC: http://www.math.uwaterloo.ca/~jamuir/rdtscpm1.pdf MS.NET – Performanzanalyse und Optimierung Matej Ciesko