Efficient Go: Data-Driven Performance Optimization

Оглавление⌄
CoverCopyrightTable of ContentsPrefaceWhy I Wrote This BookHow I Gathered This KnowledgeWho This Book Is ForHow This Book Is OrganizedConventions Used in This BookUsing Code ExamplesAcknowledgmentsFeedback Is Welcome!O’Reilly Online LearningHow to Contact UsChapter 1. Software Efficiency MattersBehind PerformanceCommon Efficiency MisconceptionsOptimized Code Is Not ReadableYou Aren’t Going to Need ItHardware Is Getting Faster and CheaperWe Can Scale Horizontally InsteadTime to Market Is More ImportantThe Key to Pragmatic Code PerformanceSummaryChapter 2. Efficient Introduction to GoBasics You Should Know About GoImperative, Compiled, and Statically Typed LanguageDesigned to Improve Serious CodebasesGoverned by Google, Yet Open SourceSimplicity, Safety, and Readability Are ParamountPackaging and ModulesDependencies Transparency by DefaultConsistent ToolingSingle Way of Handling ErrorsStrong EcosystemUnused Import or Variable Causes Build ErrorUnit Testing and Table TestsAdvanced Language ElementsCode Documentation as a First CitizenBackward Compatibility and PortabilityGo RuntimeObject-Oriented ProgrammingGenericsIs Go “Fast”?SummaryChapter 3. Conquering EfficiencyBeyond Waste, Optimization Is a Zero-Sum GameReasonable OptimizationsDeliberate OptimizationsOptimization ChallengesUnderstand Your GoalsEfficiency Requirements Should Be FormalizedResource-Aware Efficiency RequirementsAcquiring and Assessing Efficiency GoalsExample of Defining RAERGot an Efficiency Problem? Keep Calm!Optimization Design LevelsEfficiency-Aware Development FlowFunctionality PhaseEfficiency PhaseSummaryChapter 4. How Go Uses the CPU Resource (or Two)CPU in a Modern Computer ArchitectureAssemblyUnderstanding Go CompilerCPU and Memory Wall ProblemHierachical Cache SystemPipelining and Out-of-Order ExecutionHyper-ThreadingSchedulersOperating System SchedulerGo Runtime SchedulerWhen to Use ConcurrencySummaryChapter 5. How Go Uses Memory ResourceMemory RelevanceDo We Have a Memory Problem?Physical MemoryOS Memory ManagementVirtual Memorymmap SyscallOS Memory MappingGo Memory ManagementValues, Pointers, and Memory BlocksGo AllocatorGarbage CollectionSummaryChapter 6. Efficiency ObservabilityObservabilityExample: Instrumenting for LatencyLoggingTracingMetricsEfficiency Metrics SemanticsLatencyCPU UsageMemory UsageSummaryChapter 7. Data-Driven Efficiency AssessmentComplexity Analysis“Estimated” Efficiency ComplexityAsymptotic Complexity with Big O NotationPractical ApplicationsThe Art of BenchmarkingComparison to Functional TestingBenchmarks LieReliability of ExperimentsHuman ErrorsReproducing ProductionPerformance NondeterminismBenchmarking LevelsBenchmarking in ProductionMacrobenchmarksMicrobenchmarksWhat Level Should You Use?SummaryChapter 8. BenchmarkingMicrobenchmarksGo BenchmarksUnderstanding the ResultsTips and Tricks for MicrobenchmarkingToo-High VarianceFind Your WorkflowTest Your Benchmark for Correctness!Sharing Benchmarks with the Team (and Your Future Self)Running Benchmarks for Different InputsMicrobenchmarks Versus Memory ManagementCompiler Optimizations Versus BenchmarkMacrobenchmarksBasicsGo e2e FrameworkUnderstanding Results and ObservationsCommon Macrobenchmarking WorkflowsSummaryChapter 9. Data-Driven Bottleneck AnalysisRoot Cause Analysis, but for EfficiencyProfiling in Gopprof Formatgo tool pprof ReportsCapturing the Profiling SignalCommon Profile InstrumentationHeapGoroutineCPUOff-CPU TimeTips and TricksSharing ProfilesContinuous ProfilingComparing and Aggregating ProfilesSummaryChapter 10. Optimization ExamplesSum ExamplesOptimizing LatencyOptimizing bytes.SplitOptimizing runtime.slicebytetostringOptimizing strconv.ParseOptimizing Memory UsageMoving to Streaming AlgorithmOptimizing bufio.ScannerOptimizing Latency Using ConcurrencyA Naive ConcurrencyA Worker Approach with DistributionA Worker Approach Without Coordination (Sharding)A Streamed, Sharded Worker ApproachBonus: Thinking Out of the BoxSummaryChapter 11. Optimization PatternsCommon PatternsDo Less WorkTrading Functionality for EfficiencyTrading Space for TimeTrading Time for SpaceThe Three Rs Optimization MethodReduce AllocationsReuse MemoryRecycleDon’t Leak ResourcesControl the Lifecycle of Your GoroutinesReliably Close ThingsExhaust ThingsPre-Allocate If You CanOverusing Memory with ArraysMemory Reuse and PoolingSummaryNext StepsAppendix A. Latencies for Napkin Math CalculationsIndexAbout the AuthorColophon
Описание
Ниже — практический обзор по теме «will».
The author provides the tools and knowledge needed to make your systems faster and less resource-demanding. With the help of this book, any engineer will be able to learn how to approach the issues of software efficiency effectively, professionally and without stress. The book will help you achieve greater efficiency in your daily work using the Go language. In addition, most of the materials are language-independent, which will allow you to bring small but effective habits into your programming or product management cycles.
Файл доступен для загрузки ниже.
Поделиться
Частые вопросы
Можно ли скачать «Efficient Go: Data-Driven Performance Optimization» бесплатно?
Да, «Efficient Go: Data-Driven Performance Optimization» доступна для бесплатного скачивания на нашем сайте в формате PDF. Ссылка на файл находится на этой странице.
В каком формате и какого размера файл?
Книга предоставляется в формате PDF, размер файла 3,4 МБ.
Кто автор и когда вышла книга?
автор — Plotka Bartlomiej, издательство O’Reilly Media, Inc., год выпуска 2023, 498 страниц.
О чём книга «Efficient Go: Data-Driven Performance Optimization»?
With the help of this book, any engineer will be able to learn how to approach the issues of software efficiency effectively, professionally and without stress.