Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Title Page
Copyright and Credits
Mastering High Performance with Kotlin
Packt Upsell
Why subscribe?
PacktPub.com
Contributors
About the author
About the reviewer
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Download the color images
Conventions used
Get in touch
Reviews
Identifying Performance Bottlenecks
Reasons for performance issues
Memory management
Garbage collection
Working principles of the garbage collector
Impacts of garbage collection
Heap fragmentation
Finalization
Resource leaks
Memory leaks
String pool
Memory model
The problem of concurrency and parallelism
Java Memory Model (JMM)
Synchronization
Slow rendering
Device refresh rate
Frame rate
Summary
Identifying Indicators of Performance Issues
Benchmarking
Microbenchmarks
Java Microbenchmark Harness (JMH)
Benchmark modes
Benchmark time units
Benchmark state
State scope
Fixture methods
Levels of fixture methods
Writing good benchmarks
The pitfalls of loops
Dead Code Elimination
Using black holes
Constant folding
Kotlin benchmarks
IDEA JMH plugin
General performance metrics
Types of performance testing
Performance testing process
Overview of performance testing tools
JMeter
Fabric
Summary
Learning How to Use Profiling Tools
Memory profiling
Memory Viewer
HProf
Eclipse Memory Analyzer Tool
Histogram
Shallow and Retained Heap
Dominator Tree
Top Consumers
Analyzing class loaders
Android Studio Memory Profiler
Memory categories
Recording memory allocation
Threads profiling
Threads viewer
Frames pane
The Threads pane
Thread profiling in the MAT
Threads Overview
Thread Details
CPU Profiler in Android Studio
Call Chart and Flame Chart tabs
Top Down and Bottom Up tabs
Summary
Functional Approach
Functional programming
Declarative versus imperative
Pure functions
First-class functions
Higher-order functions
Function composition
Lambdas
Closures
Typeclasses
Arrow library
Functor
Monad
Immutability
Inspecting functional features
Inline versus non-inline
Capturing and non-capturing lambdas
Summary
Enhancing the Performance of Collections
Data structures
Arrays
Linked lists
Stacks
Queues
Sets
Maps
Hash tables
Binary search trees
Tries
Binary heaps
Graphs
Time complexity
Calculating time complexity
Time complexity of lists
Time complexity of sets
Time complexity of queues
Time complexity of maps
Collections in Kotlin
Sequences in Kotlin
Summary
Optimizing Access to Properties
Fields and properties
Backing fields
Backing properties
@JvmField annotation
Properties inspection
Compile-time constants
Inner classes
lateinit
Companion objects
Summary
Preventing Unnecessary Overhead Using Delegates
Types of delegation
Explicit delegation
Implicit delegation
Class delegation
Delegated properties
Lazy
Creating a delegated property
Inspecting the lazy function
Observable delegates
Summary
Ranges and Identifying Performance Issues
Ranges in Kotlin
Utility functions
Range benchmarking
Summary
Multithreading and Reactive Programming
Concurrency and parallelism
Reactive programming
Coroutines
Setting up a project
The launch function
The async function
The buildSequence function
The suspendingSequence function
The produce function
Coroutines with reactive programming
Summary
Best Practices
The disposable pattern
Immutability
Data classes
The String pool
StringBuilder
Functional programming
Declarative versus imperative
Pure functions
First-class functions
Higher-order functions
Inline functions
Function composition
Capturing lambdas
Collections
Properties
Backing properties
@JvmField annotation
Top-level members
Compile-time constants
The lateinit modifier
Delegation
Singleton delegate object
The lazy funcation with unsafe thread mode
Delegate object with generic
Ranges
Concurrency and parallelism
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
← Prev
Back
Next →
← Prev
Back
Next →