首页 > 其他分享 >9月10日总结

9月10日总结

时间:2023-09-10 11:24:41浏览次数:35  
标签:总结 10 http PGO 性能 编译器 Go 优化

在2023年早些时候,Go 1.20发布了供用户测试的概要版本的基于性能分析的优化(PGO)。经过解决预览版已知的限制,并得益于社区反馈和贡献的进一步改进,Go 1.21中的PGO支持已经准备好供一般生产使用!请查阅性能分析优化用户指南以获取完整的文档。

下面,我们将通过一个示例来演示如何使用PGO来提高应用程序的性能。在我们深入讨论之前,什么是“基于性能分析的优化”(Profile-Guided Optimization,PGO)?

当您构建一个Go二进制文件时,Go编译器会执行优化操作,以尽量生成性能最佳的二进制文件。例如,常量传播可以在编译时评估常量表达式,避免运行时的评估成本。逃逸分析避免了局部作用域对象的堆分配,从而避免了垃圾收集的开销。内联操作将简单函数的主体复制到调用者中,通常使调用者进一步优化(如额外的常量传播或更好的逃逸分析)。去虚拟化将对接口值的间接调用转换为对具体方法的直接调用(这通常允许调用的内联)。

Go会在每个版本中改进优化,但这并不是一项容易的任务。一些优化是可调节的,但编译器不能仅仅对每个优化都“加大力度”,因为过于激进的优化实际上可能会降低性能或导致构建时间过长。其他优化需要编译器对函数中的“常见”和“不常见”路径进行判断。编译器必须基于静态启发式算法进行最佳猜测,因为它无法知道哪些情况在运行时将会常见。

但是,有没有可能知道呢?

在没有确切信息的情况下,了解代码在生产环境中的使用方式,编译器只能对包的源代码进行操作。但我们有一种工具来评估生产行为:性能分析。如果我们向编译器提供一个性能分析文件,它就可以做出更明智的决策:更积极地优化最常用的函数,或更准确地选择常见情况。

使用应用程序行为的性能分析文件进行编译器优化被称为“基于性能分析的优化”(Profile-Guided Optimization,PGO)(也称为“反馈导向优化”(Feedback-Directed Optimization,FDO))。
示例

让我们构建一个将Markdown转换为HTML的服务:用户上传Markdown源文件到/render端点,该端点返回HTML转换结果。我们可以使用gitlab.com/golang-commonmark/markdown来轻松实现这个功能。
首先

$ go mod init example.com/markdown

$ go get gitlab.com/golang-commonmark/markdown@bf3e522c626a

main.go文件内容如下:

package main

import (
"bytes"
"io"
"log"
"net/http"
_ "net/http/pprof"

"gitlab.com/golang-commonmark/markdown"

)

func render(w http.ResponseWriter, r *http.Request) {
if r.Method != "POST" {
http.Error(w, "Only POST allowed", http.StatusMethodNotAllowed)
return
}

标签:总结,10,http,PGO,性能,编译器,Go,优化
From: https://www.cnblogs.com/lmyy/p/17690908.html

相关文章

  • 9.8每日总结
    今日学习时间两小时,配置了idea的环境且能够在idea上进行javaweb编程,之后进行了一部分远程连接hive的尝试工作。连接类packagecom.example.hive.config;importjavax.sql.DataSource;importlombok.Data;importorg.springframework.beans.factory.annotation.Qualifier;i......
  • 9月9日总结
    使用///<summary>///直方图相关性///结果越接近1则越相似///图片相似度识别(精度不高,速度较快,可用于以图搜图)///</summary>///<paramname="imgFile1"></param>///<paramname="imgFile2"></param>......
  • 每日总结
    长时间不操作dbeaver会和数据库断开不会自己链接上 重连的方法: 点击全部断开,然后dbeaver会重新连接的,这是目前找到最快的方式解决方式 ......
  • 国产化基于GM4680-1000 FMC AD 124通道 14bit 1Gsps
    概要国产化基于GM4680-1000FMCAD124通道14bit1Gsps子卡 原理框图 更多信息请加weixin-pt890111获取技术指标•基于GM4680-1000AD芯片•4路模拟输入;•一路外部参考/采样输入信号(CLK);一路为触发输出(TRO);一路为触发输入(TRI);•2颗板载状态指示LED•采样率:14bit/......
  • ADQ7DC-10GSPS, 14bit数字化仪
    概要1.高分辨率和高采样率的独特结合ADQ7DC具有14bit和10GSPS采样率,提高了高采样率应用中的分辨率,超出了以前的范围。这种性能提升有效地帮助我们的客户克服了性能折衷,并在许多应用中取得了重大进步。ADQ7DC可以单通道或双通道模式工作,分别具有10或5GSPS采样率。2.多功能模拟前......
  • C语言求1000以内所有的水仙花数
    求1000以内所有的水仙花数何为水仙花数一个3位整数的各位数字的立方之和等于这个整数,称之为“水仙花数”。例如:153是水仙花数,因为153=1*1*1+5*5*5+3*3*3。先看代码#include<stdio.h>#include<math.h>intmain(){inti,a,b,c,d;for(i=100;i<1000;i++)......
  • FMC AD 子卡 10bit 4 通道1.25GS/s 或 2 通道2.5GS/s 或 1 通道5.0GS/s
    概要QT7130是一款高分辨率、高采样率ADCFMC子板。它提供10bit4通道1.25GS/s或2通道2.5GS/s或1通道5.0GS/s的AD采样率(2通道2.5GS/s及1通道5GS/s模式需客户做交错采样校准),全功率模拟-3dB输入带宽可达3GHz。本产品是基于E2V公司的高速模数转换器EV10AQ190AVTPY而......
  • FMC AD子卡12bit 两通道5.2G或单通道10.4G
    概要QT7125+是一款高分辨率、高采样率ADCFMC+子板。它提供2路12位5.2GS/s或1路10.4GS/sA/D通道,全功率模拟-3dB输入带宽可达8GHz。本产品是基于TI公司ADC12DJ5200模数转换芯片而设计。板卡支持触发输出/触发输入;内部参考时钟、外部参考两种时钟方式,可通过SPI总线实现时钟源选择......
  • 10.3 注意力评分函数
    1.torch.bmm()的用法先说一般的矩阵乘法torch.mm()。torch.mm()用于将两个二维张量(矩阵)相乘,求它们的叉乘结果。如: 我们创建一个2*3的矩阵A,3*4的矩阵B,它们的值都初始化为均值为0方差为1的标准正态分布,用torch.mm()求它们的叉乘结果:importtorchfromtorchimportnnfromd......
  • 13 总结
    网络编程:通过编程,对网络上的资源进行操作首先要了解:计算机网络的概念这个计算机系统实现网络通信:1.有两个要素:IP,端口号--->了解IP和端口号的基本知识(是什么,有什么用,怎么用)2.制定与遵守网络协议:主要学习传输协议TCP与UDP。上面的两点通过编程来加深理解并且实现最后,回......