Hands-on high performance with Go : boost and optimize the performance of your Golang applications at scale with resilience /

Hands-On High Performance with Go is a complete resource with proven methodologies and techniques to help you diagnose and fix performance problems in your Go applications. With this book, you will be confident enough to solve the performance-related concerns in your enterprise applications.

Saved in:
Bibliographic Details
Main Author: Strecansky, Bob (Author)
Format: Electronic eBook
Language:English
Published: Birmingham, UK : Packt Publishing, 2020.
Subjects:
Online Access:CONNECT
Table of Contents:
  • Cover
  • Title Page
  • Copyright and Credits
  • Dedication
  • About Packt
  • Contributors
  • Table of Contents
  • Preface
  • Section 1: Learning about Performance in Go
  • Chapter 1: Introduction to Performance in Go
  • Technical requirements
  • Understanding performance in computer science
  • A brief note on Big O notation
  • Methods to gauge long term performance
  • Optimization strategies overview
  • Optimization levels
  • A brief history of Go
  • The Go standard library
  • Go toolset
  • Benchmarking overview
  • The ideology behind Go performance
  • Goroutines
  • performance from the start
  • Channels
  • a typed conduit
  • C-comparable performance
  • Large-scale distributed systems
  • Summary
  • Chapter 2: Data Structures and Algorithms
  • Understanding benchmarking
  • Benchmark execution
  • Real-world benchmarking
  • Introducing Big O notation
  • Practical Big O notation example
  • Data structure operations and time complexity
  • O(1)
  • constant time
  • O(log n)
  • logarithmic time
  • O(n)
  • linear time
  • O(n log n)
  • quasilinear time
  • O(n2)
  • quadratic time
  • O(2n)
  • exponential time
  • Understanding sort algorithms
  • Insertion sort
  • Heap sort
  • Merge sort
  • Quick sort
  • Understanding search algorithms
  • Linear search
  • Binary search
  • Exploring trees
  • Binary trees
  • Doubly linked list
  • Exploring queues
  • Common queuing functions
  • Common queuing patterns
  • Summary
  • Chapter 3: Understanding Concurrency
  • Understanding closures
  • Anonymous functions
  • Anonymous functions with respect to closures
  • Closures for nesting and deferring work
  • HTTP handlers with closures
  • Exploring goroutines
  • The Go scheduler
  • Go scheduler goroutine internals
  • The M struct
  • The P struct
  • The G struct
  • Goroutines in action
  • Introducing channels
  • Channel internals
  • Buffered channels
  • Ranges over channels
  • Unbuffered channels
  • Selects
  • Introducing semaphores
  • Understanding WaitGroups
  • Iterators and the process of iteration
  • Briefing on generators
  • Summary
  • Chapter 4: STL Algorithm Equivalents in Go
  • Understanding algorithms in the STL
  • Sort
  • Reverse
  • Min element and max element
  • Binary search
  • Understanding containers
  • Sequence containers
  • Array
  • Vector
  • Deque
  • List
  • Forward list
  • Container adapters
  • Queue
  • Priority queue
  • Stack
  • Associative containers
  • Set
  • Multiset
  • Map
  • Multimap
  • Understanding function objects
  • Functors
  • Iterators
  • Internal iterators
  • External iterators
  • Generators
  • Implicit Iterators
  • Summary
  • Chapter 5: Matrix and Vector Computation in Go
  • Introducing Gonum and the Sparse library
  • Introducing BLAS
  • Introducing vectors
  • Vector computations
  • Introducing matrices
  • Matrix operations
  • Matrix addition
  • A practical example (matrix subtraction)
  • Scalar multiplication
  • Scalar multiplication practical example
  • Matrix multiplication
  • Matrix multiplication practical example
  • Matrix transposition