Performanz-orientierte Programmierung in C# Performanzaspekte von MS

Slides:



Advertisements
Ähnliche Präsentationen
Kapitel 9: Graphdurchlauf
Advertisements

Einführung in die Informatik: Programmierung und Software-Entwicklung
Kurt Rosenberg. C# für.NET oder.NET für C# is(C# == C++ && Java)? true : false ; reines C# Ausblick Überblick.
Karo IT Viehmarkt Neumarkt Karo IT Neumarkt GmbH | Tel.:
Microsoft Referenzarchitekturen- Infrastruktur für Connected Systems
Windows Vista für Entwickler
Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2009/01/17 Graphics:
Der Einstieg in das Programmieren
Projektübung Klimamodellierung André Paul. Vorbesprechung Projektübung Klimamodellierung ( ) – A. Paul.
Objektorientierte Programmierung JDK-Klassenbibliothek
Introducing the .NET Framework
Mono und andere freie.NET Implementierungen. Implementierungen Microsoft.NET Framework Win32, Win64? Microsoft.NET Compact Framework WinCE (Mobile, Phone)
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 Model View Controller Pattern.
.NET – Quo Vadis? Dariusz Parys Developer Group Microsoft GmbH.
WebCast: Managed Smart Tags mit VSTO Jens Häupel.NET Technologieberater Microsoft Deutschland GmbH
MSDN Webcast: VB. NET für Einsteiger und Umsteiger Einführung in VB
Matrix Multiplication on CUDA
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
01 Installation / Support. © beas group 2011 / Page 2 This documentation and training is provided to you by beas group AG. The documents are neither approved.
Bild 1.1 Copyright © Alfred Mertins | Signaltheorie, 2. Auflage Vieweg+Teubner PLUS Zusatzmaterialien Vieweg+Teubner Verlag | Wiesbaden.
20:00.
Bonn-to-code.net Obfuscation mit {smartassembly} Jan Welker Website:
Microsoft Office Forms Server
SK / , , in Hochkössen und der Wildschönau flow Ski- und Snowboardschule Intersport Menzel.
Silverlight Eine Einführung. Agenda 1.Was ist Silverlight? 2.Die Silverlight Philosophie 3.Vorstellung des Szenarios 4.Einführendes Beispiel 5.Konzepte.
A thrilling star movie THE GUIDE 1 SPIN network meeting Wolfgang Pojer.
Testing using Mock Obejcts
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
SQL Server 2005 CLR-Integration
BAS5SE | Fachhochschule Hagenberg | Daniel Khan | S SPR5 MVC Plugin Development SPR6P.
...ich seh´es kommen !.
Smalltalk-Anbieter Helge K. Nowak
Consulting and Solutions.NET Vortragsreihe – Vorstellung der Referenten Happy Arts Software Markus Kämmerer IT-Erfahrung seit 1987,
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
GPU Computing Burim Kameri Fachhochschule Hannover (FHH)
Developer Day Webseiten auf Windows Azure hosten Britta Labud bbv Software Services AG Roland Krummenacher bbv Software Services AG.
IT Pro Day Entwicklung und Betrieb näher zusammen dank System Center 2012 und Team Foundation Server 2012 Hansjörg Scherer ALM Spezialist, Microsoft Schweiz.
Jan Hentschel Microsoft Expert Student Partner Windows Azure Windows Azure Windows Azure Mobile Services.
Neno Loje Berater & MVP für Visual Studio ALM und TFS (ehemals VSTS) Hochqualitative Produkte mit Visual Studio & TFS 2010.
Frank Fischer + Bernhard Frank Microsoft Deutschland GmbH.
Christian Binder Senior Platform Strategy Manager Microsoft
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
MVVM in Windows 8 und Windows Phone 8
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Präsentation läuft auch vollautomatisch ab … wie du möchtest
Auslegung eines Vorschubantriebes
XML IV: Cocoon 2.
Linker & Loader in .NET August Steinbacher.
Template v5 October 12, Copyright © Infor. All Rights Reserved.
Einführung in das Wissenschaftliche Arbeiten Andreas Hechenblaickner Programmiersprache Eiffel
Was dir Trivialbeispiele in Async and Await nicht sagen! Marcus Kimpenhaus und Martin Möllenbeck.
Digital Dashboard Toolkit 2001 SharePoint Portal Server released targeting portal market SharePoint Team Services (STS) released as free add-
© All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer.
Agenda Rückblick 2. Aufbau der Software Benutzeroberfläche 4. Ausblick
Web Services in.NET und die.NET My Services 14. November Web Services in.NET und die.NET My Services Mario Ehrlicher Senior Consultant Xuccess
Common Language Runtime Seminar Softwareentwicklung Wintersemester 2003 Gertraud Orthofer
Analyseprodukte numerischer Modelle
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
2014 Januar 2014 So Mo Di Mi Do Fr Sa So
Agile ALM for Plex/2E CM MatchPoint ALM. Themen Agenda CM MatchPoint ALM Übersicht CM MatchPoint 5.2 Web und Mobile Entwicklung Agile ALM / DevOps CM.
SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH
EN/FAD Ericsson GmbH EDD/ Information im 21. Jahrundert muss Erwünscht Relevant Erreichbar Schnell Kostenlos!?
Der Erotik Kalender 2005.
Christian Binder Senior Platform Strategy Manager Microsoft Deutschland GmbH.
Computer Services Business challenge
 Präsentation transkript:

Performanz-orientierte Programmierung in C# Performanzaspekte von MS Performanz-orientierte Programmierung in C# Performanzaspekte von MS.NET Matej Ciesko Microsoft Student Partner Friedrich – Alexander Universität Erlangen – Nürnberg matej.ciesko@stud.uni-erlangen.de

Performanz-orientierte Programmierung in C# Einführung Performanz-orientierte Programmierung Optimierung [Optimizing is the process of changing a program or the environment in which it runs to improve its performance.] Prozess der Optimierung: Problem identifizieren Problem evaluieren Anwenden einer Optimierungstechnik Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Agenda Einführung Performanzzähler (performance counters) Nanosekunden Timer MS.NET Profiling API MS.NET – Performanzaspekte CLR, JIT, CG Performanzaspekte bei Entwicklung mit C# Objekte (GC) Datentypen Sicherer/Unsicherer Code … Zusammenfassung

Performanz-orientierte Programmierung in C# Ziele Performanzaspekte des MS.NET Messen von Performanzverhalten Schreiben vom effizienten Code (C#) Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Einführung Beispielapplikation: Matrix – Matrix Multiplikation C = A * B Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanzaspekte von C# Arrays Array[index] Eliminierung der Überprüfung: Längentest im For-Header for (int i=0; i < Array.Length; i++) for (int i=0; i < Array.Length + y; i++) Array[i+6]; sum += a[i] Überprüfung Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanzaspekte von C# C# Zeiger Arbeiten außerhalb vom GC „Pinnen“ von Objekten zum Speicher unsafe{ fixed (type* ptr = expr) statement } Anmerkung: Compiler flag: /unsafe Code ist unsafe Nach dem statement sind alle “pinned” Objekte für den GC wieder freigegeben Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Einführung Beispielapplikation: ??? Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Profiling Performanzzähler Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Profiling Perf. Counters MS.NET C# Zusammenfassung Fundamentale Prinzipien der Performanz-orientierten Programmierung: Performanzziele setzen Messen, messen und noch mehr messen Optimieren Profiling: Präzise Messung (von Zeit/Clock Ticks) von Hardware und/Applikation um Aussagen über Laufzeitverhalten von Applikation treffen zu können. Hardwarezähler (performance counters) Windows Performance Counters MS.NET Profiler API Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Profiling Perf. Counters MS.NET C# Zusammenfassung Hardware Counters Sehr hohe zeitliche Auflösung!!! Performanzereignisse Programmcharakteristika, Speicher, pipeline stalls, branch prediction, ressource utilization CPU Profiling Hardware Ereignisdetektoren (event detectors) Ereigniszähler (event counters) Beispiel: RDTSC(Read Time Step Counter) typedef struct _int32 { __int32 i32[2] } BigInt; BigInt start_ticks, end_tickes; _asm { RDTSC mov start_ticks.int32val.i32[0], eax mov start_ticks.int32val.i32[4], edx } >2 x CPU SpeedStep Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Profiling Perf. Counters MS.NET C# Zusammenfassung Windows Performance Counters MS Windows API perfmon.exe Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Profiling Perf. Counters MS.NET C# Zusammenfassung .NET CLR Profiling Services speziell für Verhalten von .NET Applikationen COM – Schnittstellen: ICorProfilerCallback ICorProfilerInfo Profiler Design COM Server Komponente implementieren ICorProfilerCallback implementieren Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Profiling Perf. Counters MS.NET C# Zusammenfassung .NET CLR Profiling Services set Cor_Enable_Profiling = 0x1 set Cor_Profiler={FA0C6E77-AFF4-…992C} CLR Cor_Enable_Profiling = TRUE _myProfiler CoCreateInstance ICorProfilerCallback::Initialize Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Profiling Perf. Counters MS.NET C# Zusammenfassung Allocation Profiler (Demo) Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Profiling Perf. Counters MS.NET C# Zusammenfassung Allocation Profiler Intel® VTune™ Performance Analyzer Rational® PurifyPlus for Windows Compuware® DevPartner Profiler Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

MS.NET Performanzaspekte Speicherverwaltung Compiler Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

.NET Performanzaspekte Perf. Counters MS.NET C# Zusammenfassung Source code Fortran C# C++ Unmanaged Component Compiler Compiler Compiler Managed code Assembly IL Code Assembly IL Code Assembly IL Code Common Language Runtime JIT Compiler Native Code Operating System Services Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

.NET Performanzaspekte Perf. Counters MS.NET C# Zusammenfassung JIT (Just-In-Time) Kompilierung Ausgangspunkt Plattformunabhängiger IL Code Generelle Optimierung Constant folding, Method inlining, Loop unrolling, Common subexression elimination Optimierung zur Laufzeit Lazy code selection, cache tuning, CPU spezifische Optimierung Theoretisch: Performanter als statische Compiler Manche Optimierungen aus Zeitgründen nicht möglich Längere „startup“ Zeiten der Applikationen ngen.exe + - Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

.NET Performanzaspekte Perf. Counters MS.NET C# Zusammenfassung SciMark Benchmark Fast Fourier Transformations (FFT), Successive Over-Relaxation (SOR), Monte-Carlo Quadrat, Sparse Matrix Multiplikation, LU Matrix Dekomposition v 1.1 + 54.1 MFLOP Architekturspez. Opt. Double-to-int cast (IA-32 SSE2) 300 200 MFLOP 100 1.0 1.1 HW: 2.4GHz Pentium 4, 256 MB RAM http://rotor.cs.cornell.edu/SciMark Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

.NET Performanzaspekte Perf. Counters MS.NET C# Zusammenfassung CLR – automatische Speicherverwaltung „Allocation pattern“: GUT: Große Objekte, die am Programm- ende sterben Kleine, kurzlebige Objekte SCHLECHT: Viele Objekte überleben bis in Gen 2 und sterben „alte“ Objekte referenzieren „junge“ Objekte [1] Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

.NET Performanzaspekte Perf. Counters MS.NET C# Zusammenfassung CLR – automatische Speicherverwaltung Maß für „Allocation Profile“: Performance counter: .NET CLR Memory: %in GC GUT < 30% SCHLECHT > 30% Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

.NET Performanzaspekte Perf. Counters MS.NET C# Zusammenfassung Microsoft Shared Source CLI - „Rotor“ ECMA-334 (C#) ECMA-335 (Common Language Infrastructure) Microsoft Windows® XP FreeBSD SSCLI: www.sscli.net Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Weitere C# Tricks GC-freundliches Programmieren Boxing, Werte/Referenztypen, Zeiger, Loops Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanzaspekte von C# Perf. Counters MS.NET C# Zusammenfassung GC & StringBuilder: Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanzaspekte von C# Perf. Counters MS.NET C# Zusammenfassung Loops foreach vs. for = Eleganz vs. Performanz Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanzaspekte von C# Perf. Counters MS.NET C# Zusammenfassung SciMark HW: 2.4GHz Pentium 4, 256 MB RAM http://rotor.cs.cornell.edu/SciMark Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Zusammenfassung Perf. Counters MS.NET C# Zusammenfassung Profiling: „Performance Counter“ MS.NET CLR, GC, JIT C# Optimierungen GC-freundliches Programmieren Boxing, Werte/Referenztypen, Zeiger, Loops Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Zusammenfassung Perf. Counters MS.NET C# Zusammenfassung MS.NET als High Performance Plattform Werkzeuge zur Performanzmessung und Analyse Ausdrucksstark Einfach (Übersichtlich) Effizienter Code Plattformunabhängigkeit; Portabilität Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Fragen Vielen Dank für die Aufmerksamkeit! Haben Sie noch Fragen? Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Wie geht es weiter auf der STC…? Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004

Performanz-orientierte Programmierung in C# Ressourcen www.studentconference.de msdn.microsoft.com www.microsoft.com/net msnews.microsoft.com Rotor: www.sscli.net [1] Performance Considerations for Run-Time Technologies in the .NET Framework A .NET Developer Platform White Paper; http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/dotnetperftechs.asp Performanz-orientierte Programmierung in C# STC 02. – 03. Juni 2004