Skip to content

jakebailey/irc-benchmarks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

irc-benchmark

This repo holds benchmarks comparing various IRC libraries, all of which implement IRCv3 tags.

  • jakebailey/irc, my IRC library. In the encoding tests, WriteTo indicates that the output was directly written to an io.Writer rather than creating a temporary buffer.
  • jakebailey/ircold, a fork of MorpheusXAUT/irc, which is a fork of github.com/sorcix/irc (all to add IRCv3 tags).
  • sorcix/irc, the ircv3.2-tags branch.
  • fluffle/goirc/client, a handler-based IRC library.
  • thoj/go-ircevent, an event-based IRC library. This doesn't actually export the message parsing function, so go-forceexport was used to find a function pointer rather than fork the project.
  • goshuirc/irc-go/ircmsg, an IRC message handler lib.
  • gempir/go-twitch-irc, an IRC lib specifically for Twitch. This comparison is likely unfair because it includes extra functionailty around extracting tags.

Running go test -bench . -benchmem | prettybench:

benchmark                                              iter       time/iter   bytes alloc         allocs
---------                                              ----       ---------   -----------         ------
BenchmarkParseSimple/jakebailey/irc-4              20000000    102.00 ns/op       16 B/op    1 allocs/op
BenchmarkParseSimple/jakebailey/ircold-4           10000000    213.00 ns/op      144 B/op    3 allocs/op
BenchmarkParseSimple/fluffle/goirc/client-4         5000000    363.00 ns/op      288 B/op    4 allocs/op
BenchmarkParseSimple/sorcix/irc-4                  10000000    211.00 ns/op      144 B/op    3 allocs/op
BenchmarkParseSimple/thoj/go-ircevent-4             5000000    341.00 ns/op      256 B/op    4 allocs/op
BenchmarkParseSimple/goshuirc/irc-go/ircmsg-4      10000000    168.00 ns/op       48 B/op    2 allocs/op
BenchmarkParseSimple/gempir/go-twitch-irc-4        10000000    193.00 ns/op      448 B/op    3 allocs/op

BenchmarkParseTwitch/jakebailey/irc-4               1000000   1268.00 ns/op     1218 B/op    3 allocs/op
BenchmarkParseTwitch/jakebailey/ircold-4             300000   5765.00 ns/op     4015 B/op   64 allocs/op
BenchmarkParseTwitch/fluffle/goirc/client-4          300000   5843.00 ns/op     4159 B/op   65 allocs/op
BenchmarkParseTwitch/sorcix/irc-4                    300000   5633.00 ns/op     4015 B/op   64 allocs/op
BenchmarkParseTwitch/thoj/go-ircevent-4              300000   4551.00 ns/op     3071 B/op   23 allocs/op
BenchmarkParseTwitch/goshuirc/irc-go/ircmsg-4       1000000   2236.00 ns/op     2191 B/op    6 allocs/op
BenchmarkParseTwitch/gempir/go-twitch-irc-4          300000   5691.00 ns/op     3879 B/op   35 allocs/op

BenchmarkParseEscaping/jakebailey/irc-4              500000   2538.00 ns/op     1552 B/op    9 allocs/op
BenchmarkParseEscaping/jakebailey/ircold-4           200000   7812.00 ns/op     4878 B/op   84 allocs/op
BenchmarkParseEscaping/fluffle/goirc/client-4        200000   7966.00 ns/op     4958 B/op   84 allocs/op
BenchmarkParseEscaping/sorcix/irc-4                  200000   7842.00 ns/op     4878 B/op   84 allocs/op
BenchmarkParseEscaping/thoj/go-ircevent-4            200000   6373.00 ns/op     3549 B/op   31 allocs/op
BenchmarkParseEscaping/goshuirc/irc-go/ircmsg-4      500000   3108.00 ns/op     2462 B/op    9 allocs/op
BenchmarkParseEscaping/gempir/go-twitch-irc-4        300000   5388.00 ns/op     3678 B/op   30 allocs/op

BenchmarkEncodeSimple/jakebailey/irc-4             10000000    117.00 ns/op       48 B/op    1 allocs/op
BenchmarkEncodeSimple/jakebailey/irc_WriteTo-4     20000000    101.00 ns/op        0 B/op    0 allocs/op
BenchmarkEncodeSimple/jakebailey/ircold-4          20000000    101.00 ns/op       64 B/op    1 allocs/op
BenchmarkEncodeSimple/sorcix/irc-4                 20000000    102.00 ns/op       64 B/op    1 allocs/op
BenchmarkEncodeSimple/goshuirc/irc-go/ircmsg-4     20000000    105.00 ns/op       64 B/op    1 allocs/op

BenchmarkEncodeTwitch/jakebailey/irc-4              2000000    863.00 ns/op      352 B/op    1 allocs/op
BenchmarkEncodeTwitch/jakebailey/irc_WriteTo-4      2000000    782.00 ns/op        0 B/op    0 allocs/op
BenchmarkEncodeTwitch/jakebailey/ircold-4           1000000   1158.00 ns/op     1221 B/op    4 allocs/op
BenchmarkEncodeTwitch/sorcix/irc-4                  1000000   1139.00 ns/op     1057 B/op    3 allocs/op
BenchmarkEncodeTwitch/goshuirc/irc-go/ircmsg-4      1000000   1497.00 ns/op     1161 B/op    4 allocs/op

BenchmarkEncodeEscaping/jakebailey/irc-4            1000000   1421.00 ns/op      480 B/op    1 allocs/op
BenchmarkEncodeEscaping/jakebailey/irc_WriteTo-4    1000000   1304.00 ns/op        0 B/op    0 allocs/op
BenchmarkEncodeEscaping/jakebailey/ircold-4         1000000   1336.00 ns/op     1381 B/op    4 allocs/op
BenchmarkEncodeEscaping/sorcix/irc-4                1000000   1342.00 ns/op     1290 B/op    4 allocs/op
BenchmarkEncodeEscaping/goshuirc/irc-go/ircmsg-4    1000000   2170.00 ns/op     1677 B/op    8 allocs/op

github.com/fluffle/goirc/client, github.com/thoj/go-ircevent and github.com/gemir/go-twitch-irc are omitted from the encoding tests, as they do not support encoding of their message types, only sending strings (with or without helpers for common commands).

Formatted using prettybench.

About

Go IRC library benchmarks (w/ IRCv3 tags)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages