Go語言高效編程 原理、可觀測性與優化 版權信息
- ISBN:9787111766926
- 條形碼:9787111766926 ; 978-7-111-76692-6
- 裝幀:平裝-膠訂
- 冊數:暫無
- 重量:暫無
- 所屬分類:
Go語言高效編程 原理、可觀測性與優化 本書特色
本書將帶你穿梭于現代軟件架構與操作系統中CPU與內存的奇妙世界,從Go的基礎知識到高級特性與優化妙招,將被一一揭曉。書中還會介紹針對特定用例的優化之道,以及各種可觀測工具,比如度量指標、日志、追蹤和用于效率提升的“大殺器”——性能剖析(Profiling)。*后,從商業邏輯視角來看軟件優化的*佳時機,確保所有的努力既實際又高效。
Go語言高效編程 原理、可觀測性與優化 內容簡介
雖然技術在進步,硬件也越來越物美價廉,但如今軟件工程師仍需要關注程序的性能優化。本書將介紹軟件效率問題、Go語言快速入門知識、如何實現高效編程,告訴大家如何高效進行性能優化,以及何時進行,并給出需要的工具和相關知識,讓你使用較少的資源實現高效編程。
Go語言高效編程 原理、可觀測性與優化 目錄
目錄前言1第1章 軟件效率很重要91.1 性能的深意111.2 效率的常見誤區141.2.1 誤區1:優化后的代碼可讀性差141.2.2 誤區2:YAGNI原則201.2.3 誤區3:硬件變得更快、更廉價221.2.4 誤區4:使用水平擴展291.2.5 誤區5:盡快投入市場321.3 效率優先351.4 本章小結36第2章 初識Go語言372.1 Go基礎知識38目錄前言1第1章 軟件效率很重要91.1 性能的深意111.2 效率的常見誤區141.2.1 誤區1:優化后的代碼可讀性差141.2.2 誤區2:YAGNI原則201.2.3 誤區3:硬件變得更快、更廉價221.2.4 誤區4:使用水平擴展291.2.5 誤區5:盡快投入市場321.3 效率優先351.4 本章小結36第2章 初識Go語言372.1 Go基礎知識382.1.1 Go語言形態382.1.2 Go簡化代碼庫392.1.3 Go是谷歌的開源項目402.1.4 核心設計原則412.1.5 包和模塊422.1.6 Go如何管理依賴432.1.7 一致的工具462.1.8錯誤處理472.1.9語言生態502.1.10移除未使用的import和變量512.1.11單元測試和表測試522.2 高級語言元素542.2.1做好代碼文檔542.2.2向后兼容性和可移植性562.2.3 Go運行時572.2.4面向對象編程582.2.5泛型612.3 Go“快”嗎642.4 本章小結66第3章 征服效率683.1 對“優化”的思考693.1.1 合理的優化703.1.2 慎重的優化723.2 優化挑戰743.3 了解你的目標763.3.1 應該形式化效率要求783.3.2 資源感知的效率要求803.3.3 獲取和評估效率目標833.3.4 定義RAER的示例843.4 合理解決效率問題873.5 優化設計層級903.6 效率感知的開發流程943.6.1功能階段953.6.2效率階段973.7 本章小結99第4章 Go如何使用CPU資源1014.1 現代計算機架構中的CPU1024.2 匯編語言1044.3 了解Go編譯器1074.4 CPU和內存墻問題1134.4.1 分層緩存系統1154.4.2 流水線和亂序執行1164.4.3 超線程1184.5 調度器1204.5.1 操作系統調度器1204.5.2 Go運行時調度器1244.6 何時使用并發1304.7 本章小結131第5章 Go如何使用內存資源1335.1 內存的相關背景1345.2 是否有內存問題1355.3 物理內存1365.4 操作系統內存管理機制1395.4.1 虛擬內存1405.4.2 mmap系統調用1445.4.3 操作系統內存映射1495.5 Go內存管理機制1525.5.1 值、指針和內存塊1565.5.2 Go內存分配器1605.5.3 垃圾收集1645.6 本章小結169第6章 效率可觀測性1706.1 可觀測性1716.2 針對延遲的插樁示例1746.2.1 日志1756.2.2 追蹤1806.2.3 指標1856.3 效率指標語義1916.3.1 延遲1926.3.2 CPU使用情況1986.3.3 內存使用情況2026.4 本章小結205第7章 數據驅動的效率評估2067.1 復雜度分析2077.1.1 效率復雜度預估2077.1.2 漸近復雜度的近似預估2097.1.3復雜度分析實踐2127.2 基準測試的藝術2157.2.1與功能測試的對比2177.2.2基準測試謊言2197.3 實驗的可靠性2207.3.1人為錯誤2217.3.2重現生產環境2227.3.3性能的不確定性2247.4 基準測試級別2297.4.1生產環境中的基準測試2317.4.2宏基準測試2317.4.3微基準測試2327.4.4 正確使用基準測試2337.5 本章小結235第8章 基準測試實踐2368.1 微基準測試詳述2368.1.1 Go基準測試2388.1.2 基準測試結果分析2438.2 微基準測試技巧2478.2.1結果方差分析2478.2.2 確定工作流程2478.2.3確保結果正確2498.2.4分享基準測試2518.2.5 進行不同的基準測試2548.2.6微基準測試與內存管理2568.2.7 微基準測試與編譯器優化2578.3 宏基準測試詳述2618.3.1基礎知識2628.3.2 Go e2e 框架2658.3.3理解并觀測結果2708.4 常見的宏基準測試工作流程2778.5本章小結279第9章 數據驅動的瓶頸分析2809.1 效率根因分析2819.2 Go中的性能剖析2819.2.1 pprof格式2829.2.2 go tool pprof 報告2909.3 捕獲性能剖析信號3029.4 常用性能剖析插樁3069.4.1 堆3079.4.2 goroutine3109.4.3 CPU3129.4.4 off-CPU時間3149.5 技巧3179.5.1 共享性能剖析3179.5.2 持續性能剖析3189.5.3 比較和聚合性能剖析3229.6 本章小結323第10章 優化示例32410.1 Sum示例32510.2 優化延遲32610.2.1 優化bytes.Split32810.2.2 優化runtime.slicebytetostring33010.2.3 優化strconv.Parse33310.3 優化內存使用33510.3.1 轉向流式算法33610.3.2 優化bufio.Scanner33710.4 使用并發優化延遲34210.4.1 樸素的并發34210.4.2 分布式工作者模式34410.4.3 不需要協調的工作者模式(任務分片)34610.4.4 流式、分片的工作者模式34810.5 額外技巧:打破常規思維35110.6 本章小結352第11章 優化模式35311.1 常見模式35411.1.1 減少工作量35411.1.2 以功能換效率35611.1.3 以空間換時間35611.1.4 以時間換空間35811.2 3R優化法35811.2.1 減少分配35811.2.2 重用內存35911.2.3 回收36011.3 不要泄漏資源36211.3.1 控制goroutine的生命周期36411.3.2 可靠地關閉資源37011.3.3 耗盡資源37311.4 盡可能預分配37611.5 使用數組時過度使用內存38011.6 內存重用和池化38311.7 本章小結39111.8 后續計劃393附錄 延遲的粗略估算396
展開全部
Go語言高效編程 原理、可觀測性與優化 作者簡介
巴特洛米·普洛特卡是Red Hat的一名首席軟件工程師,擁有可觀測性和SRE背景。他是一位CNCF大使以及TAGO可觀測技術的負責人,也是Thanos項目的聯合創始人。他還作為核心維護人員參與了包括Prometheus和bingo在內的許多使用Go語言編寫的開源項目。