type CostEstimator …
type CallEstimate …
type AstNode …
type astNode …
func (e astNode) Path() []string { … }
func (e astNode) Type() *types.Type { … }
func (e astNode) Expr() ast.Expr { … }
func (e astNode) ComputedSize() *SizeEstimate { … }
type SizeEstimate …
func (se SizeEstimate) Add(sizeEstimate SizeEstimate) SizeEstimate { … }
func (se SizeEstimate) Multiply(sizeEstimate SizeEstimate) SizeEstimate { … }
func (se SizeEstimate) MultiplyByCostFactor(costPerUnit float64) CostEstimate { … }
func (se SizeEstimate) MultiplyByCost(cost CostEstimate) CostEstimate { … }
func (se SizeEstimate) Union(size SizeEstimate) SizeEstimate { … }
type CostEstimate …
func (ce CostEstimate) Add(cost CostEstimate) CostEstimate { … }
func (ce CostEstimate) Multiply(cost CostEstimate) CostEstimate { … }
func (ce CostEstimate) MultiplyByCostFactor(costPerUnit float64) CostEstimate { … }
func (ce CostEstimate) Union(size CostEstimate) CostEstimate { … }
func addUint64NoOverflow(x, y uint64) uint64 { … }
func multiplyUint64NoOverflow(x, y uint64) uint64 { … }
func multiplyByCostFactor(x uint64, y float64) uint64 { … }
var selectAndIdentCost …
var constCost …
var createListBaseCost …
var createMapBaseCost …
var createMessageBaseCost …
type coster …
type iterRangeScopes …
func (vs iterRangeScopes) push(varName string, expr ast.Expr) { … }
func (vs iterRangeScopes) pop(varName string) { … }
func (vs iterRangeScopes) peek(varName string) (int64, bool) { … }
type CostOption …
func PresenceTestHasCost(hasCost bool) CostOption { … }
type FunctionEstimator …
func OverloadCostEstimate(overloadID string, functionCoster FunctionEstimator) CostOption { … }
func Cost(checked *ast.AST, estimator CostEstimator, opts ...CostOption) (CostEstimate, error) { … }
func (c *coster) cost(e ast.Expr) CostEstimate { … }
func (c *coster) costIdent(e ast.Expr) CostEstimate { … }
func (c *coster) costSelect(e ast.Expr) CostEstimate { … }
func (c *coster) costCall(e ast.Expr) CostEstimate { … }
func (c *coster) costCreateList(e ast.Expr) CostEstimate { … }
func (c *coster) costCreateMap(e ast.Expr) CostEstimate { … }
func (c *coster) costCreateStruct(e ast.Expr) CostEstimate { … }
func (c *coster) costComprehension(e ast.Expr) CostEstimate { … }
func (c *coster) sizeEstimate(t AstNode) SizeEstimate { … }
func (c *coster) functionCost(function, overloadID string, target *AstNode, args []AstNode, argCosts []CostEstimate) CallEstimate { … }
func (c *coster) getType(e ast.Expr) *types.Type { … }
func (c *coster) getPath(e ast.Expr) []string { … }
func (c *coster) addPath(e ast.Expr, path []string) { … }
func (c *coster) newAstNode(e ast.Expr) *astNode { … }
func isScalar(t *types.Type) bool { … }
var doubleTwoTo64 …