-
Notifications
You must be signed in to change notification settings - Fork 22
/
benchmarks.yml
149 lines (147 loc) · 5.17 KB
/
benchmarks.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#
# Headline Benchmarks
#
activerecord:
desc: activerecord repeatedly queries entries in a SQLite table with highly-random names.
category: headline
chunky-png:
desc: A pure-Ruby implementation of PNG encoding
category: headline
erubi-rails:
desc: Uses Rails template rendering to repeatedly render a stubbed Discourse view.
category: headline
hexapdf:
desc: hexapdf benchmarks the hexapdf Ruby gem by line-wrapping The Odyssey with specific line-length and font.
category: headline
liquid-c:
desc: liquid-c renders a chosen-for-profiling Liquid theme repeatedly.
category: headline
liquid-compile:
desc: compiles a chosen-for-profiling Liquid theme repeatedly.
category: headline
liquid-render:
desc: renders a chosen-for-profiling Liquid theme repeatedly.
category: headline
lobsters:
desc: test a wide variety of routes in the Lobste.rs Rails app
category: headline
mail:
desc: mail tests the Mail gem by repeatedly creating an email from a text file and converting it to a string for sending.
category: headline
psych-load:
desc: psych-load repeatedly loads a small selection of YAML files taken from various OSS projects.
category: headline
railsbench:
desc: railsbench is a read-only tiny SQLite-backed Rails app, querying a small selection of .html.erb routes and JSON routes.
category: headline
rubocop:
desc: Run the RuboCop auto correction on a sizable file.
category: headline
ruby-lsp:
desc: Run the Ruby LSP's indexing mechanism.
category: headline
sequel:
desc: sequel repeatedly queries entries in a SQLite table with highly-random names.
category: headline
#
# Other Benchmarks
#
binarytrees:
desc: binarytrees from the Computer Language Benchmarks Game.
erubi:
desc: erubi compiles a simple Erb template into a method with erubi, then times evaluating that method.
etanni:
desc: etanni is an older, extremely simple template-lang format that basically turns your template into an "eval" with a lot of heredocs.
fannkuchredux:
desc: fannkuchredux from the Computer Language Benchmarks Game.
fluentd:
desc: fluentd is a log collector, which parses logs in a server and forwards them to various destinations.
graphql:
desc: GraphQL gem parsing a large file, uses Racc which has some Ruby->native->Ruby calls
graphql-native:
desc: GraphQL gem parsing a large file, but using a native parser
lee:
desc: lee is a circuit-board layout solver, deployed in a plausibly reality-like way
nbody:
desc: nbody from the Computer Language Benchmarks Game.
optcarrot:
desc: optcarrot is a functional headless NES emulator, run on a specific game cartridge for a specific number of frames.
rack:
desc: test the performance of the Rack framework with barely any routing.
ruby-json:
desc: an optimized version of the json_pure gem's pure Ruby JSON parser.
rubykon:
desc: Ruby solver for Go (the boardgame.) Runs many iterations forward from an initial starting board.
tinygql:
desc: TinyGQL gem parsing a large file in pure Ruby
nqueens:
desc: solver for the N-Queens problem
sudoku:
desc: sudoku solver
matmul:
desc: matrix multiplication benchmark
blurhash:
desc: blurhash (blurred preview image) calculation
protoboeuf:
desc: protoboeuf (pure-Ruby protobuf) message decoding
protoboeuf-encode:
desc: protoboeuf (pure-Ruby protobuf) message encoding
#
# MicroBenchmarks
#
30k_ifelse:
desc: 30k_ifelse tests thousands of nested methods containing simple if/else statements.
category: micro
single_file: true
30k_methods:
desc: 30k_methods tests thousands of nested method calls that mostly just call out to other single-call methods.
category: micro
single_file: true
cfunc_itself:
desc: cfunc_itself just calls the 'itself' method many, many times.
category: micro
single_file: true
fib:
desc: Fib is a simple exponential-time recursive Fibonacci number generator.
category: micro
single_file: true
getivar:
desc: getivar tests the performance of getting instance variable values.
category: micro
single_file: true
keyword_args:
desc: keyword_args tests the performance of method calls with keyword arguments.
category: micro
single_file: true
respond_to:
desc: respond_to tests the performance of the respond_to? method.
category: micro
single_file: true
object-new:
desc: instantiate a new object in a loop to test allocation performance
category: micro
single_file: true
setivar:
desc: setivar tests the performance of setting instance variable values.
category: micro
single_file: true
setivar_object:
desc: setivar_object tests the performance of setting instance variables to an object, to test write barrier speed.
category: micro
single_file: true
setivar_young:
desc: setivar_object tests the performance of setting instance variables to an object, to test write barrier speed on young objects.
category: micro
single_file: true
str_concat:
desc: str_concat tests the performance of string concatenation in multiple different encodings.
category: micro
single_file: true
throw:
desc: microbenchmark for the throw instruction and stack unwinding.
category: micro
single_file: true
ruby-xor:
desc: pure-Ruby string XOR microbenchmark, analogous to xorcist C extension.
category: micro
single_file: true