Index
A
- abstract-syntax-tree (AST)
- about / Complexity guarantee
- Abstract Syntax Tree (AST) / Macros and metadata
- Aleph
- reference link / Ring (web) monitoring
- URL / Aleph
- Amdahl's Law
- about / Amdahl's law
- amortization
- AppDynamics
- URL / The Alternate profilers
- array
- using, for efficiency / Using array/numeric libraries for efficiency
- array of primitives
- about / An array of primitives
- arrays
- about / Arrays
- Asphalt
- URL / JDBC
- assertions
- disabling, in production / Disabling assertions in production
- reference link / Disabling assertions in production
- Asynchronous Agents
- about / Asynchronous agents and state
- state / Asynchronous agents and state
- using / Why you should use agents
- asynchrony
- atomic updates
- about / Atomic updates and state
- and state / Atomic updates and state
- in Java / Atomic updates in Java
- support, Clojure / Clojure's support for atomic updates, Faster writes with atom striping
- faster writes, with atom striping / Faster writes with atom striping
- autopromotion
- about / Numerics, boxing, and primitives
- Avout
- URL / Distributed pipelines
B
- back pressure, applying
- about / Applying back pressure
- thread pool queues / Thread pool queues
- Tomcat / Servlet containers such as Tomcat and Jetty
- Jetty / Servlet containers such as Tomcat and Jetty
- HTTP Kit / HTTP Kit
- Aleph / Aleph
- bandwidth
- about / Bandwidth
- baseline
- about / Baseline and benchmark
- batch processing
- about / Batch processing
- benchmark
- about / Baseline and benchmark
- Big-O notation
- about / O(<7) implies near constant time
- boxed math
- detecting / Detecting boxed math
- boxed numerics
- about / Numerics, boxing, and primitives
- boxplot
- branch prediction
- about / Branch prediction
- bubbles
- about / Instruction scheduling
- bytebuffer
C
- .class files
- decompiling, into Java source / Decompiling the .class files into Java source
- cache
- about / Cache
- cache-oblivious algorithms
- about / A cache bound task
- cache bound task
- about / A cache bound task
- cachegrind
- caching
- about / Precomputing and caching
- CalfPath
- about / Web routing libraries
- URL / Web routing libraries
- capacity planning
- characters
- CharSequence box
- about / Collection types
- Cheshire library
- URL / JSON serialization
- chunking, for reducing memory pressure
- Citius
- Clj-DBCP
- URL / JDBC resource pooling
- clj-mmap
- Clojure code
- equivalent Java source, inspecting for / Inspecting the equivalent Java source for Clojure code
- latency bottlenecks / Latency bottlenecks in Clojure code
- latency bottlenecks / Latency bottlenecks in Clojure code
- aspects, for drill-down measurement / Measure only when it is hot
- tuning / Tuning Clojure code
- Clojure code, tuning
- tuning / Tuning Clojure code
- CPU/cache bound / CPU/cache bound
- memory bound / Memory bound
- multi-threaded / Multi-threaded
- Clojure concurrency support
- Clojure Parallelization
- Clojure source
- compiling, without locals clearing / Compiling the Clojure source without locals clearing
- Clojure sources
- compiling, into Java bytecode / Compiling the Clojure sources into Java bytecode
- Clojure support, for parallelization
- about / Clojure support for parallelization
- pmap / pmap
- pcalls / pcalls
- pvalues / pvalues
- Clojure web servers
- URL / Web servers
- closures
- about / Macros and closures
- collection types
- about / Collection types
- Comma Separated File (CSV) / Sizing for file/network operations
- complexity guarantees
- about / Complexity guarantee
- Compojure
- about / Web routing libraries
- Component
- computational and data-processing tasks
- about / Computational and data-processing tasks
- CPU bound computation / A CPU bound computation
- memory bound task / A memory bound task
- cache bound task / A cache bound task
- input/output (I/O) bound task / An input/output bound task
- concatenation, of persistent data structures / The concatenation of persistent data structures
- concurrency
- about / Concurrency and parallelism
- concurrency, with threads
- defining / Concurrency with threads
- JVM support, for threads / JVM support for threads
- thread pools, in JVM / Thread pools in the JVM
- Clojure concurrency support / Clojure concurrency support
- Concurrent Mark and Sweep (CMS) / JVM tuning
- concurrent pipelines
- about / Concurrent pipelines
- distributed pipelines / Distributed pipelines
- Configuration
- URL / Optimization
- Coordinated Transactional Ref
- about / Coordinated transactional ref and state
- and state / Coordinated transactional ref and state
- characteristics / Ref characteristics
- history / Ref history and in-transaction deref operations
- in-transaction deref operations / Ref history and in-transaction deref operations
- transaction retries / Transaction retries and barging
- barging / Transaction retries and barging
- transaction consistency, upping with ensure / Upping transaction consistency with ensure
- lesser transaction retries, with commutative operations / Lesser transaction retries with commutative operations
- agents, in transactions / Agents can participate in transactions
- nested transactions / Nested transactions
- performance considerations / Performance considerations
- copy collection / HotSpot heap and garbage collection
- core.async library
- URL / Transients
- core.rrb-vector contrib project
- cores / Threads and cores
- CPU bound computation
- about / A CPU bound computation
- CPU level, cycles
- fetch / Processors
- decode / Processors
- execute / Processors
- writeback / Processors
- Criterium
- latency, measuring with / Measuring latency with Criterium
- URL / Measuring latency with Criterium
- Criterium output
- about / Understanding Criterium output
D
- data serialization
- about / Data serialization
- data sizing
- about / Data sizing
- reduced serialization / Reduced serialization
- chunking, for reducing memory pressure / Chunking to reduce memory pressure
- for file/network operations / Sizing for file/network operations
- for JDBC query results / Sizing for JDBC query results
- data structure operations
- laziness / Laziness in data structure operations
- destructuring
- about / Destructuring
- Dirigiste
- URL / Aleph
- distributed pipelines
- about / Distributed pipelines
- dynamic vars
- binding / Dynamic var binding and state
- and state / Dynamic var binding and state
E
- EDN
- empirical rule
- about / Variance and standard deviation
- Encoders
- URL / Optimization
- endurance tests
- Engulf
- epochal time model
- equivalent Java source
- inspecting, for Clojure code / Inspecting the equivalent Java source for Clojure code
- error handling
- Espejito
- event-based profilers
- about / Profiling
F
- Facebook API
- reference link / Batch support at API level
- faster front-side bus (FSB) / Memory systems
- File Transfer Protocol (FTP) / Sizing for file/network operations
- first quartile
- Fork/Join framework, Java 7
- defining / Java 7's fork/join framework
- frequency
G
- garbage collection / HotSpot heap and garbage collection
- Garbage Collection (GC)
- garbage collection bottlenecks
- about / Garbage collection bottlenecks
- threads, waiting at GC safepoint / Threads waiting at GC safepoint
- jstat, using / Using jstat to probe GC details
- GCViewer
- gloss
- Graphite
- about / Performance monitoring
- URL / Monitoring through logs
- guided performance objectives
- about / Guided performance objectives
H
- hardware
- about / The hardware
- processors / Processors
- memory systems / Memory systems
- storage / Storage and networking
- networking / Storage and networking
- HikariCP
- URL / JDBC resource pooling
- HipHip
- HotSpot heap / HotSpot heap and garbage collection
- HotSpot JIT compiler
- about / The just-in-time compiler
- optimizations / The just-in-time compiler
- http-kit
- reference link / Ring (web) monitoring
- HTTP Kit
- URL / HTTP Kit
- HyperThreading / Threads and cores
- HyperTransport / Interconnect
I
- I/O batching
- about / I/O batching and throttling
- batch support, at API level / Batch support at API level
- I/O profiling
- about / I/O profiling
- i7z
- identity
- immutability
- about / Variables and mutation
- Incanter
- inlining
- about / Inlining
- input/output (I/O) bound task
- about / An input/output bound task
- instruction pipelining
- about / Processors
- instruction scheduling / Instruction scheduling
- instrumenting profilers
- about / Profiling
- Intel VTune Analyzer
- about / OS and CPU/cache-level profiling
- Internet of Things (IoT)
- about / Batch support at API level
- interning
- Inter Quartile Range (IQR)
- introspection, performance monitoring
- about / Introspection
- JVM instrumentation, via JMX / JVM instrumentation via JMX
- IOPS (Input-output per second)
- about / Bandwidth
- iota
J
- Jackson Java library
- URL / JSON serialization
- Java
- restoring to / Resorting to Java and native code
- java.jdbc
- reference link / Sizing for JDBC query results
- java.jmx
- reference link / JVM instrumentation via JMX
- Java bytecode
- Clojure sources, compiling into / Compiling the Clojure sources into Java bytecode
- Java concurrent data structures
- defining / Java concurrent data structures
- Concurrent Maps / Concurrent maps
- Concurrent Queues / Concurrent queues
- Clojure support, for concurrent queues / Clojure support for concurrent queues
- Java Management Extensions (JMX)
- about / JVM instrumentation via JMX
- Java Memory Model
- Java Native Interface (JNI) / Resorting to Java and native code
- Java Runtime Environment (JRE) / The Java Virtual Machine
- Java source
- .class files, decompiling into / Decompiling the .class files into Java source
- Java Virtual Machine
- about / The Java Virtual Machine
- memory organization / Memory organization
- HotSpot heap / HotSpot heap and garbage collection
- garbage collection / HotSpot heap and garbage collection
- memory (heap/stack) usage, measuring / Measuring memory (heap/stack) usage
- memory inefficiency, tackling / Tackling memory inefficiency
- JConsole
- about / Introspection
- JD-GUI
- JDBC
- about / JDBC
- JDBC batch operations
- about / JDBC batch operations
- JDBC resource pooling
- about / JDBC resource pooling
- Jetty
- JProfiler
- URL / The Alternate profilers
- JSON serialization
- about / JSON serialization
- jstat
- just-in-time (JIT) compiler / The just-in-time compiler
- JVM
- about / Clojure parallelization and the JVM
- reference links / JVM tuning
- JVM instruction
- JVM options
- XX*+AggressiveOpts / JVM tuning
- -server / JVM tuning
- -Xms3g / JVM tuning
- -Xmx3g / JVM tuning
- -XX*+UseLargePages / JVM tuning
- JVM options*-XX
- +UseParNewGC / JVM tuning
- Jvmtop
- about / The Java Virtual Machine
- URL / The Java Virtual Machine
K
- keywords
L
- Last-in-First-out (LIFO) / Memory organization
- last-in-first-out (LIFO)
- about / Complexity guarantee
- latency
- about / Latency
- measuring, with Criterium / Measuring latency with Criterium
- latency, performance testing
- measuring / Measuring latency
- comparative latency measurement / Comparative latency measurement
- latency measurement under concurrency / Latency measurement under concurrency
- latency numbers
- laziness
- about / Laziness
- in data structure operations / Laziness in data structure operations
- lazy sequences
- constructing / Constructing lazy sequences
- custom chunking / Custom chunking
- macros / Macros and closures
- closures / Macros and closures
- Leaky Bucket
- Leiningen
- about / Criterium and Leiningen
- Leiningen project.clj configuration
- about / Leiningen project.clj configuration
- reflection warning, enabling / Enable reflection warning
- optimized JVM options, enabling / Enable optimized JVM options when benchmarking
- less-used data structures
- constructing / Constructing lesser-used data structures
- libraries selection
- about / Choosing libraries
- libraries selection, via benchmarks
- about / Making a choice via benchmarks
- web server / Web servers
- web-routing libraries / Web routing libraries
- data serialization / Data serialization
- JSON serialization / JSON serialization
- JDBC / JDBC
- Likwid
- list
- about / Complexity guarantee
- Little's law
- about / Little's law
- performance tuning / Performance tuning with respect to Little's law
- LogBack
- URL / Logging
- about / Logging
- need for / Why SLF4J/LogBack?
- logging
- Logstash
- URL / Monitoring through logs
- Logstash-forwarder
- URL / Monitoring through logs
- low-level concurrency
- about / Low-level concurrency
- Hardware Memory Barrier (Fence) instructions / Hardware memory barrier (fence) instructions
- Java support / Java support and the Clojure equivalent
- Clojure equivalent / Java support and the Clojure equivalent
M
- macros
- about / Macros and closures, Macros and metadata
- mean
- median
- Megaref
- memoization
- about / Laziness
- memory (heap/stack) usage
- measuring / Measuring memory (heap/stack) usage
- memory-mapped buffers
- reference link / Resorting to Java and native code
- memory bound task
- about / A memory bound task
- memory organization / Memory organization
- memory systems
- about / Memory systems
- cache / Cache
- interconnect / Interconnect
- memory wall / Memory systems
- Mersenne prime
- about / A CPU bound computation
- metadata
- about / Macros and metadata
- Metaspace / Memory organization
- Metrics
- reference link / Performance monitoring
- metrics-clojure
- reference link / Performance monitoring
- metrics-clojure library
- reference link / Ring (web) monitoring
- Micro-benchmark
- about / Measuring latency
- Monitor tab
- about / The Monitor tab
- Threads tab / The Sampler tab
- Profiler tab / The Profiler tab
- Visual GC tab / The Visual GC tab
- alternate profilers / The Alternate profilers
- Moore's Law
- about / Moore's law
- Moskito
- URL / The Alternate profilers
- multimethods
- versus protocols / Multimethods versus protocols
- mutable locals, Clojure / Proteus – mutable locals in Clojure
- mutation
- about / Variables and mutation
N
- native code
- restoring to / Resorting to Java and native code
- nesting
- about / Nesting
- Netty
- URL / Aleph
- networking
- about / Storage and networking
- New Relic
- URL / The Alternate profilers
- nio
- Nippy
- no.disassemble project
- non-numeric scalars
- about / Non-numeric scalars and interning
- performance characteristics / Non-numeric scalars and interning
- Non-uniform memory access (NUMA) / Interconnect
- nREPL
- URL / Introspection
- numerical tower
- reference link / Numerics, boxing, and primitives
- numeric libraries
- using, for efficiency / Using array/numeric libraries for efficiency
- numerics
- about / Numerics, boxing, and primitives
O
- online analytical processing (OLAP)
- about / Online analytical processing
- online transaction processing (OLTP)
- about / Online transaction processing
- Onyx
- URL / Distributed pipelines
- Open Source performance
- tools, URL / The Alternate profilers
- oprofile
- optimization
- about / Performance optimization
P
- parallelism
- about / Concurrency and parallelism
- parallelism, with Reducers
- about / Parallelism with reducers
- Reducible / Reducible, reducer function, reduction transformation
- Reducer function / Reducible, reducer function, reduction transformation
- Reduction transformation / Reducible, reducer function, reduction transformation
- reducible collections, realizing / Realizing reducible collections
- Foldable collections / Foldable collections and parallelism
- Parallelism / Foldable collections and parallelism
- percentile
- about / Percentile
- perf
- perf-map-agent
- Perforate
- performance
- structured approach / A structured approach to the performance
- about / Performance and queueing theory
- performance bottlenecks
- identifying / Identifying performance bottlenecks
- latency bottlenecks, in Clojure code / Latency bottlenecks in Clojure code
- garbage collection bottlenecks / Garbage collection bottlenecks
- generated bytecode, inspecting for Clojure source / Inspecting generated bytecode for Clojure source
- throughput bottlenecks / Throughput bottlenecks
- performance characteristics, transducer
- about / Performance characteristics
- performance measurement
- performance miscellanea
- about / Performance miscellanea
- assertions, disabling in production / Disabling assertions in production
- destructuring / Destructuring
- tail-call optimization (TCO) / Recursion and tail-call optimization (TCO)
- recursion / Recursion and tail-call optimization (TCO)
- multimethods, versus protocols / Multimethods versus protocols
- inlining / Inlining
- performance modeling
- performance monitoring
- about / Performance monitoring
- through logs / Monitoring through logs
- ring (web) monitoring / Ring (web) monitoring
- introspection / Introspection
- performance optimization
- about / Performance optimization
- project, setting up / Project setup
- performance statistics
- performance testing
- about / Performance testing
- environment / The test environment
- latency, measuring / Measuring latency
- throughput, measuring / Measuring throughput
- load testing / The load, stress, and endurance tests
- stress testing / The load, stress, and endurance tests
- endurance tests / The load, stress, and endurance tests
- performance tuning
- about / Performance tuning
- Clojure code, tuning / CPU/cache bound
- I/O bound / I/O bound
- JVM Tuning / JVM tuning
- back pressure / Back pressure
- performance tuning, Little's law / Performance tuning with respect to Little's law
- performance vocabulary
- about / The performance vocabulary
- latency / Latency
- throughput / Throughput
- bandwidth / Bandwidth
- baseline / Baseline and benchmark
- benchmark / Baseline and benchmark
- profiling / Profiling
- optimization / Performance optimization
- concurrency / Concurrency and parallelism
- parallelism / Concurrency and parallelism
- resource utilization / Resource utilization
- workload / Workload
- periods
- permanent generation / Memory organization
- persistent data structures
- about / Persistent data structures
- concatenation / The concatenation of persistent data structures
- persistent hash-maps
- about / Complexity guarantee
- persistent hash-vectors
- about / Complexity guarantee
- persistent tree-maps
- about / Complexity guarantee
- persistent tree-sets
- about / Complexity guarantee
- precomputing
- about / Precomputing and caching
- premature end of collection
- about / Premature end of iteration
- prime (symbol)
- reference link / Numerics, boxing, and primitives
- primitive-math
- about / primitive-math
- URL / primitive-math
- primitive numerics
- about / Numerics, boxing, and primitives
- primitives
- about / Primitives
- Prismatic Graph
- processors
- about / Processors
- branch prediction / Branch prediction
- instruction scheduling / Instruction scheduling
- threads / Threads and cores
- cores / Threads and cores
- production
- assertions, disabling in / Disabling assertions in production
- profile
- about / Profiling
- profilers
- Profiler tab / The Profiler tab
- profiling
- about / Profiling, Profiling
- OS and CPU/cache-level profiling / OS and CPU/cache-level profiling
- I/O profiling / I/O profiling
- program counter (PC) / Memory organization
- program workload type
- determining / Determining program workload type
- project
- creating / Creating a new project
- project setup, performance optimization
- software versions / Software versions
- JVM version / Software versions
- Clojure version / Software versions
- Leiningen project.clj configuration / Leiningen project.clj configuration
- initialization and runtime, differentiating between / Distinguish between initialization and runtime
- Prometheus
- URL / The Alternate profilers
- Proteus
- protocols
- versus multimethods / Multimethods versus protocols
- proxy-super macro / Miscellaneous
Q
- queueing
- QuickPath / Interconnect
R
- recursion
- reducing function
- about / Transducers
- reference types
- validating / Validating and watching the reference types
- watching / Validating and watching the reference types
- reflection
- about / Reflection and type hints
- Relaxed Radix Balanced (RRB)
- Relic
- URL / The Alternate profilers
- REPL / Compiling the Clojure source without locals clearing
- requests
- throttling, to services / Throttling requests to services
- resource pooling
- about / Resource pooling
- JDBC resource pooling / JDBC resource pooling
- resource utilization
- about / Resource utilization
- Riemann
- Ring
- reference link / Ring (web) monitoring
- Ring-based
- Ring library
- RRB-trees paper
- references / The concatenation of persistent data structures
S
- Sampler tab / The Sampler tab
- about / The Sampler tab
- thread name, setting / Setting the thread name
- sampling profilers
- about / Profiling
- sequences
- about / Sequences and laziness
- first function / Sequences and laziness
- rest function / Sequences and laziness
- next function / Sequences and laziness
- services
- requests, throttling to / Throttling requests to services
- setup, logging
- about / The setup
- dependencies / Dependencies
- logback configuration file / The logback configuration file
- optimization / Optimization
- Simultaneous multithreading (SMT) / Threads and cores
- SLF4J
- about / Logging
- URL / Logging
- need for / Why SLF4J/LogBack?
- SpyGlass
- URL / Precomputing and caching
- Staged Event Driven Architecture (SEDA) / Concurrent pipelines
- stalls
- about / Instruction scheduling
- standard deviation
- about / Variance and standard deviation
- static instruction scheduling
- about / Instruction scheduling
- statistics terminology primer
- about / A tiny statistics terminology primer
- median / Median, first quartile, third quartile
- mean / Median, first quartile, third quartile
- first quartile / Median, first quartile, third quartile
- third quartile / Median, first quartile, third quartile
- boxplot / Median, first quartile, third quartile
- periods / Median, first quartile, third quartile
- frequency / Median, first quartile, third quartile
- percentile / Percentile
- standard deviation / Variance and standard deviation
- variance / Variance and standard deviation
- Statsd
- about / Performance monitoring
- StatsD
- URL / Monitoring through logs
- storage / Storage and networking
- Storm
- URL / Distributed pipelines
- stress testing
- string concatenation / String concatenation
- Stringer
- URL / String concatenation
- string interning
- strings
- structured approach, to performance / A structured approach to the performance
- symbols
- Symmetric multiprocessing (SMP) / Interconnect
T
- tail-call optimization (TCO)
- Tesser
- URL / Distributed pipelines
- third quartile
- threads / Threads and cores
- Threads tab
- about / The Threads tab
- running state / The Threads tab
- Sleeping state / The Threads tab
- wait state / The Threads tab
- park state / The Threads tab
- monitor state / The Threads tab
- throttling
- about / I/O batching and throttling
- throughput
- about / Throughput
- throughput, performance testing
- measuring / Measuring throughput
- average throughput test / Average throughput test
- Token Bucket
- Tomcat
- transducer
- about / Transducers
- performance characteristics / Performance characteristics
- transients
- about / Transients
- fast repetition / Fast repetition
- type hints
- about / Reflection and type hints
U
- Universal Scalability Law
- about / Universal Scalability Law
- use case classification
- about / Use case classification
- user-facing software / The user-facing software
- computational and data-processing tasks / Computational and data-processing tasks
- online transaction processing (OLTP) / Online transaction processing
- online analytical processing (OLAP) / Online analytical processing
- batch processing / Batch processing
- user-facing software
- about / The user-facing software
- USL
V
- value
- variable
- about / Variables and mutation
- variance
- about / Variance and standard deviation
- Visual GC tab / The Visual GC tab
- VisualVM
- used, for profiling code / Profiling code with VisualVM
- URL / Profiling code with VisualVM
- vnStat tool
- about / I/O profiling
W
- web-routing libraries
- about / Web routing libraries
- web server
- about / Web servers
- workload
- about / Workload
- write-buffer
- about / Low-level concurrency
- write absorption
- about / Low-level concurrency
- write skew
Y
- YourKit
- URL / The Alternate profilers