graphqlparser

package module
v0.0.0-...-72fbe86 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2020 License: MIT Imports: 5 Imported by: 0

README

go-graphqlparser

A work in progress native Go GraphQL parser. Our aim is to produce an idiomatic, and extremely fast GraphQL parser that adheres to the June 2018 GraphQL specification.

Progress

  • Lexer
  • Parser (in progress)
    • Query parsing
    • Type system parsing
    • Consistent, helpful errors
  • Validation
Benchmarks

Performance is one of this project's main goals, as such, we've kept a keen eye on benchmarks and tried to ensure that our benchmarks are fair, and reasonably comprehensive. Our results so far are shown below.

Benchmarks:

$ go test -bench=. -benchmem -benchtime=10s
goos: linux
goarch: amd64
pkg: github.com/bucketd/go-graphqlparser/language
BenchmarkLexer/bucketd-8                       10000000     1866 ns/op      320 B/op      2 allocs/op
BenchmarkLexer/graphql-go-8                     1000000    10913 ns/op     1828 B/op     30 allocs/op
BenchmarkLexer/vektah-8                         5000000     3080 ns/op     1760 B/op      8 allocs/op
BenchmarkTypeSystemParser/tsQuery/bucketd-8     3000000     4205 ns/op     2480 B/op     38 allocs/op
BenchmarkTypeSystemParser/tsQuery/vektah-8      2000000     7819 ns/op     6000 B/op     91 allocs/op
BenchmarkParser/normalQuery/bucketd-8           1000000    10934 ns/op     7552 B/op     82 allocs/op
BenchmarkParser/normalQuery/graphql-go-8         500000    40478 ns/op    26983 B/op    736 allocs/op
BenchmarkParser/normalQuery/vektah-8            1000000    20071 ns/op    15792 B/op    243 allocs/op
BenchmarkParser/tinyQuery/bucketd-8            30000000      460 ns/op      448 B/op      7 allocs/op
BenchmarkParser/tinyQuery/graphql-go-8         10000000     1504 ns/op     1320 B/op     35 allocs/op
BenchmarkParser/tinyQuery/vektah-8             20000000      821 ns/op      984 B/op     13 allocs/op
PASS
ok  	github.com/bucketd/go-graphqlparser/language	190.444s

Test machine info:

  • CPU: Intel Core i7-7700K @ 8x 5.0GHz
  • RAM: 16GiB 3200MHz DDR4
  • OS: Arch Linux 5.0.4-arch1-1-ARCH
  • Go: version go1.12.1 linux/amd64

The benchmark code is included in this repository, please feel free to take a look at it yourself, if you spot a mistake in our benchmark code that would give us an unfair advantage (or disadvantage!) then please let us know.

License

MIT

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// DefaultValidationWalker ...
	DefaultValidationWalker = validation.NewWalker(rules.Specified)
	// DefaultValidationWalkerSDL ...
	DefaultValidationWalkerSDL = validation.NewWalker(rules.SpecifiedSDL)
)

Functions

func ParseDoc

func ParseDoc(doc []byte, schema *graphql.Schema) (*ast.Document, *graphql.Errors, error)

ParseDoc ...

func ParseSDLDoc

func ParseSDLDoc(doc []byte, schema *graphql.Schema) (*graphql.Schema, *graphql.Errors, error)

ParseSDLDoc ...

Types

This section is empty.

Directories

Path Synopsis
Code generated by tools/listgen DO NOT EDIT!
Code generated by tools/listgen DO NOT EDIT!
Code generated by tools/listgen DO NOT EDIT!
Code generated by tools/listgen DO NOT EDIT!
lab
out
tools
Code generated by lab/walkergen DO NOT EDIT!
Code generated by lab/walkergen DO NOT EDIT!

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL