SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Microbenchmarks
Wer nicht weiß, was er misst misst Mist
2
01 Microbenchmarks
02 Hinter den Kulissen der JVM
03 Garbage Collection
04 Java Microbenchmarking Harness (JMH)
AGENDA
3
Microbenchmarks
Artikel im Internet:
“Always using Arrays.sort() gives better performance.”
Was war der Ausgangspunkt?
4
Microbenchmarks
Ein Microbenchmark ist ein kleiner künstlicher Benchmark
welcher dazu gedacht ist, eine Methode oder einen
Algorithmus zu testen und verschiedene Szenarien
und/oder Implementierungen miteinander zu vergleichen
5
Microbenchmarks
• Regel Nr. 1: Traue niemals deinen Ergebnissen!
• Regel Nr. 2: Benchmarks lügen mehr als Statistiken!
• Regel Nr. 3: Überprüfe immer deine Ergebnisse!
6
Microbenchmarks
• Einfacher Ansatz
List<Integer> aList = new ArrayList<>();
//fill list with values
long t1 = System.currentTimeMillis();
Collections.sort(aList);
long t2 = System.currentTimeMillis();
System.out.println("Time for using Collections.sort() "+(t2-t1)+"ms");
7
Microbenchmarks
• Besser
int loopCount = 1_000_000;
List<List<Integer>> allLists = new ArrayList<>();
//create and fill lists
long start = System.nanoTime();
for (int i = 0; i < loopCount; i++) {
Collections.sort(allLists.get(i));
}
long end = System.nanoTime();
System.out.println("Duration: " + (end - start)/loopCount);
8
Hinter den Kulissen der JVM
9
Hinter den Kulissen der JVM
HotSpot
• Ist der Name der Java Virtual Machine von SUN
– Wird jetzt von Oracle gewartet
– andere waren z.B. JRockit, Apache Harmony
– Aktuell: OpenJ9, Zulu & GraalVM
• Standard seit Java 1.3
• Code wird während der Ausführung optimiert
10
Hinter den Kulissen der JVM
JIT – Just in Time Compiler
• Optimiert den Code während der Laufzeit
• Optimierung wird erst nach mehreren tausend Durchläufen gestartet
• Namensgebend für die HotSpot-Engine
11
Hinter den Kulissen der JVM
Was macht HotSpot?
• Bytecode wird zur Laufzeit von der JVM interpretiert
– Langsamste Form der Ausführung
• Häufige Aufrufe von Methoden führen zur Optimierung
– Diese Methoden werden dann direkt in Maschinencode übersetzt
– müssen danach nicht mehr interpretiert werden
– Kompilierter Code wird im Code Cache gespeichert
• Optimierung findet mehrstufig statt (tiered compilation)
12
Hinter den Kulissen der JVM
Tiered Compilation
• Stufe 0: Interpreter
• Stufe 1: C1 - einfacher Modus
• Stufe 2: C1 - begrenzte Optimierungen (einfaches Profiling)
• Stufe 3: C1 - volle C1 Optimierung (volles Profiling)
• Stufe 4: C2 - volle C2 Optimierung (verwendet C1 Profiling Daten)
13
Hinter den Kulissen der JVM
Deoptimierung
• Ausführungspfad ändert sich plötzlich
Calculator calculator;
if (x == 3) {
calculator = new SpecialCalculator();
}
else {
calculator = new StandardCalculator();
}
calculator.calculate();
14
Hinter den Kulissen der JVM
Inlining
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 0;
for (int i = 0; i < 100; i++) {
c = addMe(a, b);
}
System.out.println("result is: " + c);
}
public static int addMe(int a, int b) {
return a+b;
}
15
Hinter den Kulissen der JVM
JIT–Compiler
<task_queued compile_id='34' method='com/lucanet/training/benchmark/JitTest addMe (II)I'
bytes='3' count='128' iicount='128' level='1' blocking='1' stamp='0.330' comment='tiered'
hot_count='128’/>
334 35 % b 3 com.lucanet.training.benchmark.JitTest::main @ 11 (56 bytes)
@ 20 com.lucanet.training.benchmark.JitTest::addMe (3 bytes)
@ 37 java/lang/StringBuilder::&lt;init&gt; (not loaded) not inlineable
@ 42 java/lang/StringBuilder::append (not loaded) not inlineable
@ 46 java/lang/StringBuilder::append (not loaded) not inlineable
@ 49 java/lang/StringBuilder::toString (not loaded) not inlineable
@ 52 java/io/PrintStream::println (not loaded) not inlineable
356 37 % b 4 com.lucanet.training.benchmark.JitTest::main @ 11 (56 bytes)
@ 20 com.lucanet.training.benchmark.JitTest::addMe (3 bytes) inline (hot)
16
Hinter den Kulissen der JVM
JIT-Compiler Optimierungen
• Method Inlining
• Dead Code Elimination
• Loop Unrolling
• Escape Analysis
17
Garbage Collection
18
Garbage Collection
• Garbage Collectoren verwalten den Speicherbedarf eines Programms
• Es wird zur Laufzeit versucht, nicht mehr benötigte Speicherbereiche zu identifizieren
und dann freizugeben
• Es gibt mehrere Garbage Collectoren, welche aber derzeit alle nach dem Prinzip der
Generational Garbage Collection funktionieren
19
Garbage Collection
20
Garbage Collection
• Serial GC
• Parallel GC
• (mostly) Concurrent Mark and Sweep GC
• Garbage First Garbage Collector (G1GC)
21
Garbage Collection
6
Microbenchmarks
• Einfacher Ansatz
List<Integer> aList = new ArrayList<>();
//fill list with values
long t1 = System.currentTimeMillis();
Collections.sort(aList);
long t2 = System.currentTimeMillis();
System.out.println("Time for using Collections.sort() "+(t2-t1)+"ms");
7
Microbenchmarks
• Besser
int loopCount = 1_000_000;
List<List<Integer>> allLists = new ArrayList<>();
//create and fill lists
long start = System.nanoTime();
for (int i = 0; i < loopCount; i++) {
Collections.sort(allLists.get(i));
}
long end = System.nanoTime();
System.out.println("Duration: " + (end - start)/loopCount);
24
Microbenchmarks
//sorted using Collections.sort()
List<Integer> aList = new ArrayList<>();
for(int i =10000000;i>=0;i--)
{
aList.add(i);
}
long t1 = System.currentTimeMillis();
Collections.sort(aList);
long t2 = System.currentTimeMillis();
System.out.println("Time Required using Collections.sort() :: "+(t2-t1)+"ms");
//sorted using Arrays.sort()
List<Integer> bList = new ArrayList<>();
for(int i =10000000;i>=0;i--)
{
bList.add(i);
}
long t3 = System.currentTimeMillis();
Arrays.sort(bList.toArray());
long t4 = System.currentTimeMillis();
System.out.println("Time Required using Arrays.sort() :: "+(t4-t3)+"ms");
9
Hinter den Kulissen der JVM
HotSpot
• Ist der Name der Java Virtual Machine von SUN
– Wird jetzt von Oracle gewartet
– andere waren z.B. JRockit, Apache Harmony
– Aktuell: OpenJ9, Zulu & GraalVM
• Standard seit Java 1.3
• Code wird während der Ausführung optimiert
26
Java Microbenchmarking Harness
Die Rettung: JMH (Java Microbenchmarking Harness)
• Das einfachste Setup funktioniert mit einem Maven-Projekt
• Den Benchmark nicht in der IDE ausführen!
• Immer das gebaute JAR auf der Kommandozeile ausführen
27
Java Microbenchmarking Harness
Beispiel
@Benchmark
@OutputTimeUnit(TimeUnit.MILLISECONDS)
@Fork(5)
@Warmup(iterations = 10)
@Measurement(iterations = 30)
@BenchmarkMode(Mode.AverageTime)
public List<Integer> testCollect_Sort() {
Collections.sort(aList);
return aList;
}
28
Java Microbenchmarking Harness
# Run progress: 0,00% complete, ETA 00:07:30
# Fork: 1 of 1
# Warmup Iteration 1: 18,629 ms/op
# Warmup Iteration 2: 18,138 ms/op
# Warmup Iteration 3: 18,844 ms/op
# Warmup Iteration 4: 18,157 ms/op
# Warmup Iteration 5: 18,932 ms/op
Iteration 1: 19,422 ms/op
Iteration 2: 18,143 ms/op
Iteration 3: 18,297 ms/op
Iteration 4: 18,265 ms/op
Iteration 5: 18,176 ms/op
Iteration 6: 18,165 ms/op
Iteration 7: 18,697 ms/op
Iteration 8: 18,325 ms/op
Iteration 9: 18,029 ms/op
Iteration 10: 18,137 ms/op
29
Java Microbenchmarking Harness
Resultat (gekürzt)
Benchmark Mode Cnt Score Error Units
SortBenchmark.testCollec_Sort avgt 10 18,365 ± 0,624 ms/op
30
Java Microbenchmarking Harness
@State
public static class MyState {
List<Integer> aList = new ArrayList<>(LIST_SIZE);
List<Integer> bList = new ArrayList<>(LIST_SIZE);
List<Integer> cList = new ArrayList<>(LIST_SIZE);
@Setup(Level.Invocation)
public void createLists() {
aList.clear(); bList.clear(); cList.clear();
for (int i = 0; i < LIST_SIZE; i++) {
int randInt = RandomUtils.nextInt();
aList.add(randInt);
bList.add(randInt);
cList.add(randInt);
} } }
31
Java Microbenchmarking Harness
Veränderter Methodenaufruf
@Benchmark
public List<Integer> testCollect_Sort(MyState myState) {
Collections.sort(myState.aList);
return myState.aList;
}
32
Java Microbenchmarking Harness
Resultate des ersten Testlaufs
Benchmark Mode Cnt Score Error Units
SortBenchmark.testCollec_Sort avgt 10 16,832 ± 0,691 ms/op
SortBenchmark.testArrays_Sort avgt 10 128,085 ± 5,362 ms/op
33
Java Microbenchmarking Harness
Was ist die Ursache?
@Benchmark
public List<Integer> testArrays_Sort(MyState myState) {
Arrays.sort(myState.bList.toArray());
return myState.bList;
}
34
Java Microbenchmarking Harness
Resultate des zweiten Testlaufs
Benchmark Mode Cnt Score Error Units
SortBenchmark.testCollec_Sort avgt 10 16,840 ± 0,781 ms/op
SortBenchmark.testArrays_Sort avgt 10 127,458 ± 5,268 ms/op
SortBenchmark.testArrays_Sort_2 avgt 10 16,522 ± 0,358 ms/op
35
Java Microbenchmarking Harness
Garbage Collector
• Epsilon GC (JEPS-318) – NoOp Garbage Collector
@Fork(value=1, jvmArgs={„-XX:+UnlockExperimentalVMOptions“,
„-XX:+UseEpsilonGC“, „-Xmx2g“})
@BenchmarkMode(Mode.AverageTime)
public Map<Integer, Integer> test1(MyState myState) {
Collections.sort(myState.aList);
return myState.aList;
}
36
Java Microbenchmarking Harness
JMH - Tipps:
Verwendet keine Schleifen in der Benchmark-Methode
Gebt immer das Ergebnis der Berechnung zurück (der JMH
kümmert sich dann darum)
Benutzt die @Setup Mechanismus für die Erstellung der
notwendigen Ausgangswerte
NoOp-GC nur für Tests verwenden – Niemals in Produktion!
37
Microbenchmarks
Die Fallen
• Microbenchmarks haben immer den Nachteil, dass das zu messende
Problem häufig sehr simplifiziert wird und der JIT-Compiler mehr
Möglichkeiten hat, Optimierungen vorzunehmen.
• Die Live-Umgebung hat eventuell Seiteneffekte, die bei
Microbenchmarks nicht zum Tragen kommen.
• Die Ergebnisse können deshalb nur zwischen Microbenchmarks
verglichen werden und NICHT mit Zahlen aus einer
Produktivumgebung.
18
Garbage Collection
• Garbage Collectoren verwalten den Speicherbedarf eines Programms
• Es wird zur Laufzeit versucht, nicht mehr benötigte Speicherbereiche zu identifizieren
und dann freizugeben
• Es gibt mehrere Garbage Collectoren, welche aber derzeit alle nach dem Prinzip der
Generational Garbage Collection funktionieren
20
Garbage Collection
• Serial GC
• Parallel GC
• (mostly) Concurrent Mark and Sweep GC
• Garbage First Garbage Collector (G1GC)
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
1010101010101010101010101010101010101010101010
010101010101001010101010101010101010101
0101010101010101010101010101010101
PROBLEMLÖSER?
BIST DU EIN
29
Java Microbenchmarking Harness
Resultat (gekürzt)
Benchmark Mode Cnt Score Error Units
SortBenchmark.testCollec_Sort avgt 10 18,365 ± 0,624 ms/op

Mais conteúdo relacionado

Semelhante a Microbenchmarks - Wer nicht weiß, was er misst misst Mist

Differenzial Analyse in der Praxis (Florian Walther)
Differenzial Analyse in der Praxis (Florian Walther)Differenzial Analyse in der Praxis (Florian Walther)
Differenzial Analyse in der Praxis (Florian Walther)GEEKcon
 
Oracle workshop sessiontracing
Oracle workshop sessiontracingOracle workshop sessiontracing
Oracle workshop sessiontracingciganek
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...gedoplan
 
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios Ulrike Schwinn
 
Besseren Java Code mit Type Annotations
Besseren Java Code mit Type AnnotationsBesseren Java Code mit Type Annotations
Besseren Java Code mit Type Annotationsdzuvic
 
SQL-Updates mit der JDBC-API
SQL-Updates mit der JDBC-APISQL-Updates mit der JDBC-API
SQL-Updates mit der JDBC-APItutego
 
Prometheus Monitoring
Prometheus MonitoringPrometheus Monitoring
Prometheus Monitoringinovex GmbH
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins Christian Kauhaus
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Marc Müller
 
Mein paralleles Leben als Java-Entwickler
Mein paralleles Leben als Java-EntwicklerMein paralleles Leben als Java-Entwickler
Mein paralleles Leben als Java-Entwicklerjlink
 
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPALightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPAmh0708
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkdie.agilen GmbH
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTddjlink
 
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkTYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkdie.agilen GmbH
 
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?Marc Müller
 
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenSEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenDr. Herwig Henseler
 
Unit testing mit Javascript
Unit testing mit JavascriptUnit testing mit Javascript
Unit testing mit Javascriptjoergreichert
 
Apache camel
Apache camelApache camel
Apache camelgedoplan
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeFrank Müller
 

Semelhante a Microbenchmarks - Wer nicht weiß, was er misst misst Mist (20)

Differenzial Analyse in der Praxis (Florian Walther)
Differenzial Analyse in der Praxis (Florian Walther)Differenzial Analyse in der Praxis (Florian Walther)
Differenzial Analyse in der Praxis (Florian Walther)
 
Oracle workshop sessiontracing
Oracle workshop sessiontracingOracle workshop sessiontracing
Oracle workshop sessiontracing
 
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
Battle of the Languages: Java und Python im Wettstreit beim Lösen von Program...
 
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
 
Besseren Java Code mit Type Annotations
Besseren Java Code mit Type AnnotationsBesseren Java Code mit Type Annotations
Besseren Java Code mit Type Annotations
 
SQL-Updates mit der JDBC-API
SQL-Updates mit der JDBC-APISQL-Updates mit der JDBC-API
SQL-Updates mit der JDBC-API
 
Prometheus Monitoring
Prometheus MonitoringPrometheus Monitoring
Prometheus Monitoring
 
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
nagiosplugin - eine Python-Biblioth­ek für Monitoring-Plug­ins
 
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
Karlsruher Entwicklertag 2016 - Monitoring 2.0: Alles im Lot?
 
Mein paralleles Leben als Java-Entwickler
Mein paralleles Leben als Java-EntwicklerMein paralleles Leben als Java-Entwickler
Mein paralleles Leben als Java-Entwickler
 
Lightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPALightweight AOP with CDI and JPA
Lightweight AOP with CDI and JPA
 
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerkTYPO3 CMS 7.3 - Die Neuerungen - pluswerk
TYPO3 CMS 7.3 - Die Neuerungen - pluswerk
 
AdvancedTdd
AdvancedTddAdvancedTdd
AdvancedTdd
 
5min analyse
5min analyse5min analyse
5min analyse
 
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerkTYPO3 CMS 7.4 - Die Neuerungen - pluswerk
TYPO3 CMS 7.4 - Die Neuerungen - pluswerk
 
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
DWX 2016 - Monitoring 2.0 - Monitoring 2.0: Alles im Lot?
 
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgenSEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
SEROM 2018 - 11/14/17/20 - C++ gestern heute und morgen
 
Unit testing mit Javascript
Unit testing mit JavascriptUnit testing mit Javascript
Unit testing mit Javascript
 
Apache camel
Apache camelApache camel
Apache camel
 
Go - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare SystemeGo - Googles Sprache für skalierbare Systeme
Go - Googles Sprache für skalierbare Systeme
 

Mais de Java Usergroup Berlin-Brandenburg

Die fabelhafte Welt Java(Script)-getriebener Enterprise-WebApps (mit Ext JS)
Die fabelhafte Welt Java(Script)-getriebener Enterprise-WebApps (mit Ext JS)Die fabelhafte Welt Java(Script)-getriebener Enterprise-WebApps (mit Ext JS)
Die fabelhafte Welt Java(Script)-getriebener Enterprise-WebApps (mit Ext JS)Java Usergroup Berlin-Brandenburg
 
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02Java Usergroup Berlin-Brandenburg
 

Mais de Java Usergroup Berlin-Brandenburg (19)

Collections.compare(() -> JDK; Apache; Eclipse, Guava...});
Collections.compare(() -> JDK; Apache; Eclipse, Guava...});Collections.compare(() -> JDK; Apache; Eclipse, Guava...});
Collections.compare(() -> JDK; Apache; Eclipse, Guava...});
 
Built To Last - Nachhaltige Software-Entwicklung
Built To Last - Nachhaltige Software-EntwicklungBuilt To Last - Nachhaltige Software-Entwicklung
Built To Last - Nachhaltige Software-Entwicklung
 
Feature Toggles On Steroids
Feature Toggles On SteroidsFeature Toggles On Steroids
Feature Toggles On Steroids
 
Resilience mit Hystrix
Resilience mit HystrixResilience mit Hystrix
Resilience mit Hystrix
 
Analysis of software systems using jQAssistant and Neo4j
Analysis of software systems using jQAssistant and Neo4jAnalysis of software systems using jQAssistant and Neo4j
Analysis of software systems using jQAssistant and Neo4j
 
Get Back in Control of your SQL
Get Back in Control of your SQLGet Back in Control of your SQL
Get Back in Control of your SQL
 
Die fabelhafte Welt Java(Script)-getriebener Enterprise-WebApps (mit Ext JS)
Die fabelhafte Welt Java(Script)-getriebener Enterprise-WebApps (mit Ext JS)Die fabelhafte Welt Java(Script)-getriebener Enterprise-WebApps (mit Ext JS)
Die fabelhafte Welt Java(Script)-getriebener Enterprise-WebApps (mit Ext JS)
 
Selbstvorstellung Steria Mummert Consulting
Selbstvorstellung Steria Mummert ConsultingSelbstvorstellung Steria Mummert Consulting
Selbstvorstellung Steria Mummert Consulting
 
Graphdatenbanken mit Neo4j
Graphdatenbanken mit Neo4jGraphdatenbanken mit Neo4j
Graphdatenbanken mit Neo4j
 
Jbosseapclustering 130605100557-phpapp02
Jbosseapclustering 130605100557-phpapp02Jbosseapclustering 130605100557-phpapp02
Jbosseapclustering 130605100557-phpapp02
 
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02
Jbossas7alsplattformmodernerenterprise anwendungen-130604114410-phpapp02
 
How long can you afford to Stop The World?
How long can you afford to Stop The World?How long can you afford to Stop The World?
How long can you afford to Stop The World?
 
JavaOne Update zur Java Plattform
JavaOne Update zur Java PlattformJavaOne Update zur Java Plattform
JavaOne Update zur Java Plattform
 
Java EE 7 - Overview and Status
Java EE 7  - Overview and StatusJava EE 7  - Overview and Status
Java EE 7 - Overview and Status
 
Restructuring
RestructuringRestructuring
Restructuring
 
Fighting Layout Bugs
Fighting Layout BugsFighting Layout Bugs
Fighting Layout Bugs
 
Die Java Plattform Strategie
Die Java Plattform StrategieDie Java Plattform Strategie
Die Java Plattform Strategie
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Continuous Delivery in der Praxis
Continuous Delivery in der PraxisContinuous Delivery in der Praxis
Continuous Delivery in der Praxis
 

Último

Aktuelles aus der Cybercrime Ermittlungswelt - Splunk Public Sector Summit
Aktuelles aus der Cybercrime Ermittlungswelt - Splunk Public Sector SummitAktuelles aus der Cybercrime Ermittlungswelt - Splunk Public Sector Summit
Aktuelles aus der Cybercrime Ermittlungswelt - Splunk Public Sector SummitSplunk EMEA
 
Compliance-Anforderungen erfüllen: Von der Standardlösung zur kundenspezifisc...
Compliance-Anforderungen erfüllen: Von der Standardlösung zur kundenspezifisc...Compliance-Anforderungen erfüllen: Von der Standardlösung zur kundenspezifisc...
Compliance-Anforderungen erfüllen: Von der Standardlösung zur kundenspezifisc...Splunk EMEA
 
RPA 2024: Rollen, Lebenszyklus, Trends & Chancen
RPA 2024: Rollen, Lebenszyklus, Trends & ChancenRPA 2024: Rollen, Lebenszyklus, Trends & Chancen
RPA 2024: Rollen, Lebenszyklus, Trends & ChancenFotiosKaramitsos
 
Ein Umbrella Monitoring für die e-Akte Hessen - Splunk Public Sector Summit 2024
Ein Umbrella Monitoring für die e-Akte Hessen - Splunk Public Sector Summit 2024Ein Umbrella Monitoring für die e-Akte Hessen - Splunk Public Sector Summit 2024
Ein Umbrella Monitoring für die e-Akte Hessen - Splunk Public Sector Summit 2024Splunk EMEA
 
Transparenz? Leicht und zentral - Splunk Public Sector Summit 2024
Transparenz? Leicht und zentral - Splunk Public Sector Summit 2024Transparenz? Leicht und zentral - Splunk Public Sector Summit 2024
Transparenz? Leicht und zentral - Splunk Public Sector Summit 2024Splunk EMEA
 
Splunk als zentrale Datendrehscheibe zur Dienstleistersteuerung - Splunk Publ...
Splunk als zentrale Datendrehscheibe zur Dienstleistersteuerung - Splunk Publ...Splunk als zentrale Datendrehscheibe zur Dienstleistersteuerung - Splunk Publ...
Splunk als zentrale Datendrehscheibe zur Dienstleistersteuerung - Splunk Publ...Splunk EMEA
 
SOC ist kein Allheilmittel! - Splunk Public Sector Summit 2024
SOC ist kein Allheilmittel! - Splunk Public Sector Summit 2024SOC ist kein Allheilmittel! - Splunk Public Sector Summit 2024
SOC ist kein Allheilmittel! - Splunk Public Sector Summit 2024Splunk EMEA
 
Zentrales Logdaten-Management in der KfW - Splunk Public Sector Summit 2024
Zentrales Logdaten-Management in der KfW - Splunk Public Sector Summit 2024Zentrales Logdaten-Management in der KfW - Splunk Public Sector Summit 2024
Zentrales Logdaten-Management in der KfW - Splunk Public Sector Summit 2024Splunk EMEA
 
Mandantenfähigkeit mit Splunk für den öffentlichen Bereich - Splunk Public Se...
Mandantenfähigkeit mit Splunk für den öffentlichen Bereich - Splunk Public Se...Mandantenfähigkeit mit Splunk für den öffentlichen Bereich - Splunk Public Se...
Mandantenfähigkeit mit Splunk für den öffentlichen Bereich - Splunk Public Se...Splunk EMEA
 
Mit Risikokapital Innovationen hervorbringen
Mit Risikokapital Innovationen hervorbringenMit Risikokapital Innovationen hervorbringen
Mit Risikokapital Innovationen hervorbringenBDI
 
Cyber-Sicherheit im Luftraum: Die Rolle von SIEM und SOC im Schutz kritischer...
Cyber-Sicherheit im Luftraum: Die Rolle von SIEM und SOC im Schutz kritischer...Cyber-Sicherheit im Luftraum: Die Rolle von SIEM und SOC im Schutz kritischer...
Cyber-Sicherheit im Luftraum: Die Rolle von SIEM und SOC im Schutz kritischer...Splunk EMEA
 
Private Cloud Monitoring, Security Monitoring & DevOps - Splunk Public Sector...
Private Cloud Monitoring, Security Monitoring & DevOps - Splunk Public Sector...Private Cloud Monitoring, Security Monitoring & DevOps - Splunk Public Sector...
Private Cloud Monitoring, Security Monitoring & DevOps - Splunk Public Sector...Splunk EMEA
 
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...Splunk EMEA
 

Último (13)

Aktuelles aus der Cybercrime Ermittlungswelt - Splunk Public Sector Summit
Aktuelles aus der Cybercrime Ermittlungswelt - Splunk Public Sector SummitAktuelles aus der Cybercrime Ermittlungswelt - Splunk Public Sector Summit
Aktuelles aus der Cybercrime Ermittlungswelt - Splunk Public Sector Summit
 
Compliance-Anforderungen erfüllen: Von der Standardlösung zur kundenspezifisc...
Compliance-Anforderungen erfüllen: Von der Standardlösung zur kundenspezifisc...Compliance-Anforderungen erfüllen: Von der Standardlösung zur kundenspezifisc...
Compliance-Anforderungen erfüllen: Von der Standardlösung zur kundenspezifisc...
 
RPA 2024: Rollen, Lebenszyklus, Trends & Chancen
RPA 2024: Rollen, Lebenszyklus, Trends & ChancenRPA 2024: Rollen, Lebenszyklus, Trends & Chancen
RPA 2024: Rollen, Lebenszyklus, Trends & Chancen
 
Ein Umbrella Monitoring für die e-Akte Hessen - Splunk Public Sector Summit 2024
Ein Umbrella Monitoring für die e-Akte Hessen - Splunk Public Sector Summit 2024Ein Umbrella Monitoring für die e-Akte Hessen - Splunk Public Sector Summit 2024
Ein Umbrella Monitoring für die e-Akte Hessen - Splunk Public Sector Summit 2024
 
Transparenz? Leicht und zentral - Splunk Public Sector Summit 2024
Transparenz? Leicht und zentral - Splunk Public Sector Summit 2024Transparenz? Leicht und zentral - Splunk Public Sector Summit 2024
Transparenz? Leicht und zentral - Splunk Public Sector Summit 2024
 
Splunk als zentrale Datendrehscheibe zur Dienstleistersteuerung - Splunk Publ...
Splunk als zentrale Datendrehscheibe zur Dienstleistersteuerung - Splunk Publ...Splunk als zentrale Datendrehscheibe zur Dienstleistersteuerung - Splunk Publ...
Splunk als zentrale Datendrehscheibe zur Dienstleistersteuerung - Splunk Publ...
 
SOC ist kein Allheilmittel! - Splunk Public Sector Summit 2024
SOC ist kein Allheilmittel! - Splunk Public Sector Summit 2024SOC ist kein Allheilmittel! - Splunk Public Sector Summit 2024
SOC ist kein Allheilmittel! - Splunk Public Sector Summit 2024
 
Zentrales Logdaten-Management in der KfW - Splunk Public Sector Summit 2024
Zentrales Logdaten-Management in der KfW - Splunk Public Sector Summit 2024Zentrales Logdaten-Management in der KfW - Splunk Public Sector Summit 2024
Zentrales Logdaten-Management in der KfW - Splunk Public Sector Summit 2024
 
Mandantenfähigkeit mit Splunk für den öffentlichen Bereich - Splunk Public Se...
Mandantenfähigkeit mit Splunk für den öffentlichen Bereich - Splunk Public Se...Mandantenfähigkeit mit Splunk für den öffentlichen Bereich - Splunk Public Se...
Mandantenfähigkeit mit Splunk für den öffentlichen Bereich - Splunk Public Se...
 
Mit Risikokapital Innovationen hervorbringen
Mit Risikokapital Innovationen hervorbringenMit Risikokapital Innovationen hervorbringen
Mit Risikokapital Innovationen hervorbringen
 
Cyber-Sicherheit im Luftraum: Die Rolle von SIEM und SOC im Schutz kritischer...
Cyber-Sicherheit im Luftraum: Die Rolle von SIEM und SOC im Schutz kritischer...Cyber-Sicherheit im Luftraum: Die Rolle von SIEM und SOC im Schutz kritischer...
Cyber-Sicherheit im Luftraum: Die Rolle von SIEM und SOC im Schutz kritischer...
 
Private Cloud Monitoring, Security Monitoring & DevOps - Splunk Public Sector...
Private Cloud Monitoring, Security Monitoring & DevOps - Splunk Public Sector...Private Cloud Monitoring, Security Monitoring & DevOps - Splunk Public Sector...
Private Cloud Monitoring, Security Monitoring & DevOps - Splunk Public Sector...
 
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
Splunk für alle: Optimierte Prozesse für eine zuverlässige und störungsfreie ...
 

Microbenchmarks - Wer nicht weiß, was er misst misst Mist