You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: abstract-etc.md
+44-6Lines changed: 44 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -1,30 +1,68 @@
1
1
Bio
2
2
---
3
-
4
-
Matt Godbolt is a software engineer with trading firm DRW. He is passionate about efficient code. He has previously worked at Google, run his own C++ tools company and spent more than a decade making computer games.
3
+
Matt Godbolt is a software engineer with trading firm DRW, and the creator of the Compiler Explorer website.
4
+
He is passionate about writing efficient code. He has previously worked at on mobile apps at Google, run his own C++
5
+
tools company and spent more than a decade making console games.
5
6
6
7
Title
7
8
-----
8
-
Unbolting the Lid of your Compiler
9
+
Unbolting the Compiler's Lid, or What Has My Compiler Done For Me Lately?
9
10
10
11
Tags
11
12
----
12
13
compilers,assembly,optimization
13
14
14
15
Session Description
15
16
-------------------
16
-
In 2012, Matt and a colleague were discussing which approach to loop iteration would be more efficient. During the discussion a bash script was written to quickly compile C++ source and dump the assembly. Five years later and that script has grown into a website relied on by many to quickly see the code their compiler emits, to compare different compilers' code generation and behaviour, to quickly prototype and share code, and investigate the effect of optimization flags.
17
+
In 2012, Matt and a colleague were arguing whether it was efficient to use the then-new-fangled range for. During the
18
+
discussion a bash script was written to quickly compile C++ source and dump the assembly. Five years later and that
19
+
script has grown into a website relied on by many to quickly see the code their compiler emits, to compare different
20
+
compilers' code generation and behaviour, to quickly prototype and share code, and investigate the effect of optimization flags.
17
21
18
-
In this talk Matt will not only show you how easy (and fun!) it is to understand the assembly code generated by your compiler, but also how important it can be. He'll explain how he uses Compiler Explorer in his day job programming low-latency trading systems, and show some real-world examples. He'll demystify assembly code and give you the tools to understand and appreciate how hard your compiler works for you.
22
+
In this talk Matt will not only show you how easy (and fun!) it is to understand the assembly code generated by your
23
+
compiler, but also how important it can be. He'll explain how he uses Compiler Explorer in his day job programming
24
+
low-latency trading systems, and show some real-world examples. He'll demystify assembly code and give you the tools
25
+
to understand and appreciate how hard your compiler works for you.
19
26
20
-
He'll also talk a little about how Compiler Explorer works behind the scenes, how it is maintained and deployed, and share some stories about how it has changed over the years. By the end of this session you'll be itching to take your favourite code snippets and start exploring what your compiler does with them.
27
+
He'll also talk a little about how Compiler Explorer works behind the scenes, how it is maintained and deployed, and
28
+
share some stories about how it has changed over the years. By the end of this session you'll be itching to take your
29
+
favourite code snippets and start exploring what your compiler does with them.
21
30
22
31
Material
23
32
--------
24
33
Slides, any links and source code used.
25
34
26
35
Outline
27
36
-------
37
+
* Backstory
38
+
* Demo
39
+
* Including assembly 101, or how to fake it at assembly
40
+
* Compilers are super-smart!
41
+
* Appropriately defeating the optimizer to see what you'd expect
42
+
* Demo some "power features" that some people don't necessarily know about (diff view, multiple editors) - depends on
43
+
screen resolution of the project and visibility.
44
+
* A warning: MEASURE EVERYTHING! Limitations of "just" looking at the assembly output (dovetails with hash maps below)
45
+
* Case Studies, including things like:
46
+
* Loop iteration shoot-out, pre-increment vs post-increment vs range-for vs std::algorithms
47
+
* Hash maps, GCC's STL unordered_map vs boost multi-index
48
+
* Compiler Explorer in low-latency trading: formatting exchange orders (and/or processing market data)
49
+
* Undefined behaviour is your friend, or how clang beats gcc with linked list iteration
50
+
* Unpicking your object model, or devirtualisation for dummies
51
+
* Plus, many, many more (allocation elision in clang, non-virtual thunks, write combining, address sanitisation)
52
+
* How other people use it, including things like
53
+
* Compiler teams (e.g. at Google)
54
+
* Slack
55
+
* Twitter competition to "generate most code from 140c of code"
56
+
* Template metaprogramming REPL using constepr
57
+
* Minimal bug reports for compilers / search for regressions
58
+
* Peeking behind the curtain: how CE works
59
+
* The code (and how to run it locally)
60
+
* The compilers (and how to get most of them locally yourself)
61
+
* The magic that runs on Amazon's infrastructure
62
+
* Conclusions and call to action!
63
+
* Everyone should be using this!
64
+
* Thanks to my contributors and patreon supporters
0 commit comments