Imports #
"errors"
"fmt"
"internal/profile"
"io"
"sort"
"bufio"
"fmt"
"io"
"bufio"
"fmt"
"io"
"strings"
"strconv"
"errors"
"fmt"
"internal/profile"
"io"
"sort"
"bufio"
"fmt"
"io"
"bufio"
"fmt"
"io"
"strings"
"strconv"
const serializationHeader = "GO PREPROFILE V1\n"
NamedCallEdge identifies a call edge by linker symbol names and call site offset.
type NamedCallEdge struct {
CallerName string
CalleeName string
CallSiteOffset int
}
NamedEdgeMap contains all unique call edges in the profile and their edge weight.
type NamedEdgeMap struct {
Weight map[NamedCallEdge]int64
ByWeight []NamedCallEdge
}
Profile contains the processed data from the PGO profile.
type Profile struct {
TotalWeight int64
NamedEdgeMap NamedEdgeMap
}
FromPProf parses Profile from a pprof profile.
func FromPProf(r io.Reader) (*Profile, error)
FromSerialized parses a profile from serialization output of Profile.WriteTo.
func FromSerialized(r io.Reader) (*Profile, error)
IsSerialized returns true if r is a serialized Profile. IsSerialized only peeks at r, so seeking back after calling is not necessary.
func IsSerialized(r *bufio.Reader) (bool, error)
WeightInPercentage converts profile weights to a percentage.
func WeightInPercentage(value int64, total int64) float64
WriteTo writes a serialized representation of Profile to w. FromSerialized can parse the format back to Profile. WriteTo implements io.WriterTo.Write.
func (d *Profile) WriteTo(w io.Writer) (int64, error)
createNamedEdgeMap builds a map of callsite-callee edge weights from the profile-graph. Caller should ignore the profile if totalWeight == 0.
func createNamedEdgeMap(g *profile.Graph) (edgeMap NamedEdgeMap, totalWeight int64, err error)
func emptyProfile() *Profile
func postProcessNamedEdgeMap(weight map[NamedCallEdge]int64, weightVal int64) (edgeMap NamedEdgeMap, totalWeight int64, err error)
func sortByWeight(edges []NamedCallEdge, weight map[NamedCallEdge]int64)
Generated with Arrow