Documentation
¶
Overview ¶
Package inltest helps you to test that performance-sensitive funcs are inlineable.
Example ¶
package main import ( "fmt" "log" "github.com/Quasilyte/inltest" ) func main() { issues, err := inltest.CheckInlineable(map[string][]string{ "github.com/Quasilyte/inltest": { "CheckInlineable", "nonexisting", }, // errors.New is inlineable => gives no issue. "errors": { "New", }, "strings": { "(*Builder).WriteRune", }, }) if err != nil { log.Fatalf("inltest failed: %v", err) } for _, issue := range issues { fmt.Println(issue) } }
Output: github.com/Quasilyte/inltest.CheckInlineable: unhandled op RANGE github.com/Quasilyte/inltest.nonexisting: unknown reason strings.(*Builder).WriteRune: function too complex: cost 178 exceeds budget 80
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CheckInlineable ¶
CheckInlineable tries to find whether provided candidates are inlineable.
Returns a list of reasons for symbols that were not proven to be inlineable. If it's nil, then all symbols in candidates map are inlineable.
The candidates maps import path to the symbols that should be checked.
Here are some examples:
"io/ioutil": {"ReadAll"} // Check bytes.ReadAll function "bytes": {"(*Buffer).Len"} // Check bytes.Buffer Len method
Note that you can check several symbols from the same package.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.