Giter Club home page Giter Club logo

cppcon2017_notes's Introduction

Cpp Con 2017 Notes

Notes, talk summaries, trip reports from Cpp Con 2017

Intro

Links

Trip Reports

Talks

Here's a list of talks with a summary and they key points.

Bjarne Stroustrup "Learning and Teaching Modern C++"

CppCon 2017: Bjarne Stroustrup “Learning and Teaching Modern C++” - YouTube

  • "We're all teachers" - this is a good talk, especially for all the people who teach other how to code: but not only bloggers, proffesors... but even for you when you advice/help your collegues from time to time.
  • C++ was tought sometimes in a messy way, so we can do better.
  • "if you write your own linked list (and use it in production code) you're cool". We cannot teach that way any more. It's just better to use STL.
  • Simple example: Why range for loop is better than the old for loop (with i as the index).

Matt Godbolt “What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid”

CppCon 2017: Matt Godbolt “What Has My Compiler Done for Me Lately? Unbolting the Compiler's Lid”

PDF slides

  • Matt's story: why he loves asm and how he started with Compiler Explorer.
  • ASM 101, it's really not that hard to read some of the basic code. It might help you to understand your code better.
  • Examples of how compilers might be smart. Math stuff mostly, but intresting to see how it's usually best to rely on the code generation.
  • Tech stack behind Compiler Explorer

Herb Sutter "Meta - Thoughts on Generative C++"

PDF slides

YouTube presentation

At the beginning of the talk, Herb Sutter smartly “smuggled” very interesting concept of “Consistent comparison” in C++ which details you can find in proposal material P0515 R0.

Main part was based on C++ static reflection – many links about this topic you can find on Jens Weller site. Herb shown how C++ can be easily extended using meta-classes that introduce another kind of abstraction. That was announcement of great changes that will come in near future.

Carl Cook “When a Microsecond Is an Eternity: High Performance Trading Systems in C++”

CppCon 2017: Carl Cook “When a Microsecond Is an Eternity: High Performance Trading Systems in C++”

PDF slides

  • High Frequency Trading in general earns money by buying and selling very often, and looking for small price changes. The success is to be faster than the competition.
  • Usually they have like 2.5us to react and do the trade... it's less time than a light travelling from top of BBurj Khalifa to the bottom!
  • C++ is used because it's a relatively abstract language, gives zero cost overhead over the abstraction over the hardware.
  • They often have to check the generated code, so it's no coincidence that Compiler Explorer comes from that industry... check Matt's talk.
  • Techniques covered (for the hot path, not for the whole code)
  • removing branch prediction, using templates and compile time configuration (to avoid dynamic polimorphism, virtual method costs, eliminate branches)
  • Lambdas are very expressive and still give a lot of power, they might be inlined.
  • Be carefull about memory allocations, use pool of pre allocated objects, delete on other thread
  • Carl advices to use exceptions (but not for the control flow!), they cost zero if they didn't throw.
  • Multithreading is usually avoided for low latency code, the hot path. They even disable all other cores and use just one.
  • Use data wisely, if you read something from the memory, use full cache lines
  • There's a comparision of various hash map approaches
  • in order to keep the cache hot, they might run simulations and only from time to time do the actual trade/response.
  • As usually: measure measure measure :)
  • They setup a production system to measure it reliably

Scott Wardle "EA's Secret Weapon - Packages and Modules"

PDF slides

YouTube presentation

  • 15 years ago ElectronicArts faced the problem of code sharing and versioning. The company with many departaments around the world and code base running on multiple platforms decided to use code level, package approach.
  • A package is a C++ library source code conatining package name, package version, public includes (interface) and private includes and sources.
  • Masterconfig file specifies list of all packages and versions ( including coinstraints ) on executable/project/team level.
  • Each EA team build the packages on its own using configuration packages containing building flags.
  • Packages are uploaded to package server, while source code is stored independently on VCS.
  • Both packages and modules deals with public interfaces and hiding privates.

Contributors

cppcon2017_notes's People

Contributors

fenbf avatar lukaszrachwalski avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.