in memory computer summit 2019 london · in memory computer summit 2019 london. about me per...
TRANSCRIPT
![Page 1: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/1.jpg)
Ultra-Low Latency with Java and Terabytes of DataIn Memory Computer Summit 2019London
![Page 2: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/2.jpg)
About Me
Per Minborg● Alumni speaker: JavaOne, DevNexus and Oracle Code● Writer: Modern Java , Oracle Java Magazine, DZone, blog● Inventor, entrepreneur: Speedment● Silicon Valley, Gothenburg
![Page 3: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/3.jpg)
-1
![Page 4: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/4.jpg)
![Page 5: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/5.jpg)
![Page 6: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/6.jpg)
1. Slow Databases
2. Data on Several Nodes and no Affinity Across Data
3. Data is Remote
4. Unnecessary Object Creation / Garbage Collect Problem
5. Lack of Parallelism
Why Are Applications Slow?
![Page 7: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/7.jpg)
Data grows exponentially, which clogs systems
Slow Databases
Stor
age
Capa
city
in E
xaby
tes
![Page 8: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/8.jpg)
Low Latency Scale Out
Low Affinity
Several Nodes/no Affinity Across Data
![Page 9: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/9.jpg)
Low Latency Scale Out
Low Affinity
Several Nodes/no Affinity Across Data
![Page 10: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/10.jpg)
N1 N2
Σ=10 Σ=20
Σ=30
Several Nodes/no Affinity Across Data
![Page 11: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/11.jpg)
N1 N2
Σ=10 Σ=20
Σ=30
Several Nodes/no Affinity Across Data
![Page 12: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/12.jpg)
N1 N2
Σ=10 Σ=20
Σ=30
Several Nodes/no Affinity Across Data
![Page 13: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/13.jpg)
N8
N4
N1 N2
N3
N5N6
N7
?
Several Object Types/Nodes/no Affinity Across Data
![Page 14: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/14.jpg)
![Page 15: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/15.jpg)
Low Latency
Several Nodes/no Affinity Across Data
Scale Out
Low Affinity
![Page 16: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/16.jpg)
45 ms
25 µs
100 µs
Data is Remote: Laws of Nature
![Page 17: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/17.jpg)
1-3 µs
Linux Kernel
ProcessProcess
Process
Process
Data is Remote: Operating System
![Page 18: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/18.jpg)
Unnecessary Object Creation
![Page 19: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/19.jpg)
Unnecessary Object Creation
![Page 20: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/20.jpg)
Unnecessary Object Creationprivate Map<Integer, Film> createMap() { return LongStream.range(0, (int) 1E9) .mapToObj(Main::createFilm) .collect( toMap( Film::getFilmId, Function.identity() ) );}
![Page 21: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/21.jpg)
Unnecessary Object Creation● Objects
○ Many extra objects such as Integer and Map.Entry are created○ Subject to overhead and byte alignment○ Long expected lifetime leads to repeated evaluation by GC ○ Difficult to retrieve objects (except for key/value), e.g. films longer than 60 s
● TreeMap for each field adds to the overhead
● gcExecutionTime(#objects) is not linear
![Page 22: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/22.jpg)
Unnecessary Object CreationCollection Time [s] vs. Heap Size [GB]
Colle
ctio
n Ti
me
[s]
Heap Size [GB]
![Page 23: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/23.jpg)
To write a single Java object to main memory takes 200 ns
00 00 EA B6 08 E2 02 01 00 00 01 A9 AA FF FF FE 00 01 00 10
Unnecessary Object Creation
![Page 24: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/24.jpg)
$ nproc –all
32
$ top
PID USER %CPU %MEM 2105 java 100.0 5.4
1 root 0.5 0.4
Lack of Parallelism
![Page 25: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/25.jpg)
The Solution:
What is that...?
![Page 26: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/26.jpg)
In-Memory
Data is in RAM
The application is remotely connected to a grid, other machine, other process
In-JVM-Memory
Data is in RAM
The application and data resides in the sameJVM
In-Memory vs. In-JVM-Memory
Application
![Page 27: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/27.jpg)
CPU Cache Latencies
64-bit Main Memory Read
In-JVM-Memory Makes Ultra-Low Latency Possible
![Page 28: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/28.jpg)
In-Memory vs. In-JVM-Memory: Performance
Speedment In-JVM-Memory
Grid of 4 nodes
100
75
50
25
00.66%
100%
![Page 29: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/29.jpg)
Is that even possible...?
![Page 30: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/30.jpg)
Scaling up In-JVM-Memory
![Page 31: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/31.jpg)
Today: Scale up to 12 TB (Intel® Xeon® Processor E7-8855 v4 * 4)
Soon: Scale up to 48 TB
Scaling up In-JVM-Memory
![Page 32: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/32.jpg)
Scaling up In-JVM-Memory
![Page 33: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/33.jpg)
General Belief Fact AWS “x1e.Nxlarge”
Increase Memory in the Cloud as You Grow
Cost
[$/h
] Internal RAM [GiB]
Cost
[$/h
]
Internal RAM [GiB]
![Page 34: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/34.jpg)
In-JVM-Memory SolutionAdd-on for your current solution for part of your data
High Level ShardingPer year, region, segment 12 TB 12 TB 12 TB
America EMEA Asia
Memory Mapping (e.g. IMDT)
12 TB 24 TB
RAM SSD
12 TB
What if I Have More Than 12 TB?
RAM SSD
![Page 35: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/35.jpg)
What if My Data Grows?
![Page 36: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/36.jpg)
Data with 75% correlation
In-JVM-Memory vs. In-Memory Performance
Size [GB]
Rela
tive
Perfo
rman
ce
![Page 37: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/37.jpg)
Low Latency
Recap
Scale Out
Low Affinity
![Page 38: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/38.jpg)
Low Latency
In-JVM-Memory Makes it Possible
Scale Up
Low Affinity
![Page 39: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/39.jpg)
In-JVM-Memory Solution:
![Page 41: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/41.jpg)
• Continuously creates data snapshots from a data source
• Places the copy within the JVM• Off-Heap Data
• Off-Heap Indexing
• Operations O(1) or O(log(N))
• No Impact on Garbage Collect
JVM
Speedment: In-JVM-Memory DataStore
![Page 42: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/42.jpg)
Speedment: In-JVM-Memory DataStore
Heap Misc
Heap MiscOff-Heap
![Page 43: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/43.jpg)
java.util.stream.Stream
Speedment API: Java Stream ORM
![Page 44: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/44.jpg)
Speedment API: Java Stream ORM
![Page 45: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/45.jpg)
Declarative Constructs in SQL and Stream
SELECT * FROM FILM
WHERE RATING = ‘PG-13’
films.stream()
.filter(Film.RATING.equal("PG-13"))
Speedment API: Java Stream ORM
![Page 46: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/46.jpg)
films.stream() .filter(Film.RATING.equal("PG-13")) .count();
Process Data without Creating Intermediate Objects
![Page 47: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/47.jpg)
Process Data without Creating Intermediate Objects
films.stream() .filter(Film.RATING.equal("PG-13")) .collect(toJsonLengthAndTitle());
![Page 48: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/48.jpg)
index film_id length rating year language title[0] 0 267 267 0 0 0
[1] 267 0 0 267 267 267
[2] 523 523 523 523 523 523
index film_id 0
length4
rating12
year16
language20
Title…
[0] 1 123 PG-13 2006 1 ACAD..
[267] 2 69 G 2006 1 ACE G…[523] 3 134 PG-13 2006 1 ADAP…
Speedment Can Process Data without Creating Intermediate Objects
films.stream() .filter(Film.RATING.equal("PG-13")) .collect(toJsonLengthAndTitle());
![Page 49: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/49.jpg)
Speedment: Off-Heap Joins/Aggregations
var join = joinComponent.from(FilmManager.IDENTIFIER).innerJoinOn(Language.LANGUAGE_ID).equal(Film.LANGUAGE_ID).build(Tuples::of);
![Page 50: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/50.jpg)
Speedment: Off-Heap Joins/Aggregations
var offHeapAggregator = Aggregator.builder(Result::new).on(Film.LANGUAGE_ID).key(Result::setLanguage).on(Film.RATING).key(Result::setRating).on(Film.LENGTH).average(Result::setAverage).build();
![Page 51: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/51.jpg)
Speedment: Off-Heap Joins/Aggregations
var result = join.stream().collect(offHeapAggregator);
![Page 52: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/52.jpg)
Speedment: Parallel Processing
join.stream().parallel().collect(offHeapAggregator);
![Page 53: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/53.jpg)
$ nproc –all
32
$ top
PID USER %CPU %MEM 2107 java 3170.0 5.4
1 root 0.5 0.4
Speedment: Parallel Processing
![Page 54: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/54.jpg)
![Page 55: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/55.jpg)
Demo: Download Sakila Example Database
![Page 56: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/56.jpg)
@Benchmarkpublic long filterAndCount() {
return films.stream().filter(RATING_EQUALS_PG_13).count();
}
1
2
JVM
Demo: Stream
![Page 57: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/57.jpg)
Demo: Initialize the Project
www.speedment.com/initializer
![Page 58: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/58.jpg)
Demo: Connect to the Sakila Database
![Page 59: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/59.jpg)
Demo: Generate the Domain Model
![Page 60: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/60.jpg)
Demo
![Page 61: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/61.jpg)
Ultra-Low Latency (Lower is Better)Stream Latency vs. JDK
Stre
am L
aten
cy [
ns]
Java Runtime
![Page 62: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/62.jpg)
![Page 63: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/63.jpg)
Easy Integration: Any Data Source
![Page 64: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/64.jpg)
Deploy Anywhere
![Page 65: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/65.jpg)
IDE Integration
![Page 66: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/66.jpg)
Web Service Integration
![Page 68: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/68.jpg)
• What if I have a transactional application?
• How to pin down my app to a specific CPU?
• How does memory management work off-heap?
• I have data in a no-SQL database or on file?
• How does the snapshot affect application startup?
• If I stream over a kazillion objects, won’t my heap overflow?
• Does Speedment rely on C, C++ libraries or native code?
But wait...
![Page 69: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/69.jpg)
index film_id length rating year language title[0] 0 267 267 0 0 0
[1] 267 0 0 267 267 267
[2] 523 523 523 523 523 523
index film_id 0
length4
rating12
year16
language20
Title…
[0] 1 123 PG-13 2006 1 ACAD..
[267] 2 69 G 2006 1 ACE G…[523] 3 134 PG-13 2006 1 ADAP…
Speedment Can Process Data without Creating Intermediate Objects
films.stream() .filter(Film.RATING.equal("PG-13")) .collect(toJsonLengthAndTitle());
![Page 70: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/70.jpg)
Outline
1. Objects on the Stack
2. Proper Performance Testing
3. Short-circuit Streams for Massive Performance Gain
4. Holding Terabytes of Data in the JVM with no GC impact
5. Create Large Aggregations of Data without Intermediate Objects
![Page 71: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/71.jpg)
CPU Cache Latencies
64-bit Main Memory Read
In-JVM-Memory Makes Ultra-Low Latency Possible
![Page 72: In Memory Computer Summit 2019 London · In Memory Computer Summit 2019 London. About Me Per Minborg Alumni speaker: JavaOne, DevNexus and Oracle Code ... Collection Time [s] vs](https://reader033.vdocuments.site/reader033/viewer/2022060314/5f0ba5ca7e708231d43188a3/html5/thumbnails/72.jpg)
films.stream() .filter(Film.RATING.equal("PG-13")) .count();
Process Data without Creating Intermediate Objects