Benchmarking, Profiling, and Optimizing Go Workshop

Presented by Cory LaNou

Description

This course was designed to take experienced Go developers and walk them through how to use all the Go tooling to make your code perform better. We will start with a complete look at benchmarking from start to finish. Then a walk-through of the profiling tools will be presented. Students will finish up by learning about common optimizations in Go. After learning about these optimizations, you will be able to apply this knowledge to your own code to identify performance issues.

What a student is expected to learn

Everyone will have a strong understanding of the testing, benchmarking, and profiling tools that ship in Go. They will also learn how to identify common performance mistakes and how to correct them. Finally, they will learn how to combine all the tools to find additional performance bottlenecks in their code.

Prerequisites

At least one year of production experience with the Go programming language. This course is not for students that are just learning Go for the first time, regardless of your development background or experience.

Buy Tickets - $199
Agenda (4 hours)
Wednesday, May 20, 2020
  • 2:00 PM EST
    Introduction and setup
  • 2:10 PM EST
    Start Workshop
  • 3:45 PM EST
    30 Minute Break
  • 4:15 PM EST
    Workshop
  • 6:00 PM EST
    End Workshop
Presenter's Bio

Cory LaNou is a full-stack technologist who has specialized in start-ups for the last 20 years. He worked on the Core engineering team that contributes to InfluxDB, a highly scalable, distributed time series database written in Go. Cory has worked on several Go projects with a focus on profiling and optimizing applications, using advanced profiling concepts such as flame graphs and tracing profiles. He has created and led numerous Go workshops and training courses. He has also published several online articles related to Go. Cory helps lead and organize several community technology meetups and mentors new developers. Cory is a partner at Gopher Guides, the industry leader for Go training and conferences.

Course Details

  • Welcome

    This module covers general information about your instructor and course materials.

  • Getting Started

    This chapter covers general environment setup and other resource related information needed to complete the courses contained within.

  • Benchmarking

    Go comes with a powerful set of tools for profiling and improving the performance of your code. Benchmarking is one of those tools, and the first one most developers start with. In this module we will cover basic benchmarking, some common benchmarking mistakes, and how to compare benchmarks to see if performance has improved.

  • Profiling

    Go ships with a number of profiling tools. This chapter will walk you through how to:

    • Use interactive pprof with a cpu profile
    • Use interactive pprof with different types of memory profiles
    • Generate profiles from benchmarks
    • Generate profiles from live/running applications
    • Generate torch graphs from benchmarks or live/running applications
  • Optimizing Go Services

    Understanding how to use tools like pprof and writing benchmarks is important, but understanding common coding pitfalls and how to spot them with those tools is the end goal.

    In this interactive workshop, you will:

    • Learn several compiler tricks to spot areas for improvement
    • Learn how to properly buffer readers and writers
    • Find and remove unnecessary memory allocations
    • Use flame graphs to identify redundant calls

Buy Now! $49

Includes admission for all talks, real time discussions, and early access to all recorded videos. View the agenda.

Buy Now! $199

At the heart of Machine Learning is the model’s code, but it only accounts for a fraction of the overall code of a production system and the rest is the infrastructure needed to power and utilize it. In this workshop, we will focus on the infrastructure of a Machine Learning application written in Go and integrate the systems needed to deploy a ML model at scale.

Buy Now! $199

At the 'edges' of your program (e.g. when interacting with other services) you will use serialization to send and receive data. Working efficiently with serialization will make your interfaces more flexible, will save you money on CPU & bandwidth and free you to focus on writing business value code.

Buy Now! $199

Whether you are just getting started in Go or have been writing Go code for a couple years, this class will make sure you have what you need to write simple, quick, robust tests. We will start with the basics and introduce table driven tests. Then we'll work through advanced concepts such as testing asynchronous code as well as mocking and injecting code. We’ll finish up with example tests and code coverage. We believe in a hands-on approach to learning, so be ready to write a lot of tests!

Buy Now! $199

This course is tailored to developers learning Go for the first time or having less than one year of Go development experience. This workshop will cover practical, daily Go fundamentals. Starting with the language fundamentals, students will move into interfaces and how they lend to embedding and composition in Go. We will finish up with an overview of concurrency in Go.

Buy Now! $199

This course was designed to take experienced Go developers and walk them through how to use all the Go tooling to make your code perform better. We will start with a complete look at benchmarking from start to finish. Then a walk-through of the profiling tools will be presented. Students will finish up by learning about common optimizations in Go. After learning about these optimizations, you will be able to apply this knowledge to your own code to identify performance issues.