The 2023 Call for Speakers opens -- C++ on Sea

Whether you're a first-time speaker, or an old pro, we have a place for you at C++ on Sea in 2023. We'd love to hear from all parts of the community, so if you have something to say - please let us know!

The 2023 Call for Speakers opens

From the article:

The call runs until 8th January 2023. If you're reading this at the start of December that might sound like a long way off, yet - but don't be fooled! Due to time dilation caused by the end of year holiday season, it can sneak up much faster than you expect. So don't delay.

Mike Shah's Modern C++ YouTube Series -- Mike Shah

Mike Shah's Modern C++ YouTube series has recently posted the 100th video. 

The freely available YouTube series adds 1-2 videos a week on Modern C++ or other related C++ topics.

Modern C++ YouTube Series

by Mike Shah

About the videos

The series can be watched from start to finish, or otherwise as a complement to those studying C++ from a text to learn about specific C++ language features.

The Power of Clean C++ -- SonarSource

We use C++ for its raw power. But that power comes at a price: the language is notoriously hard to use correctly and efficiently - especially both at the same time. And that's before you try and make it easy for the next person to read, too!

The Power of Clean C++

by SonarSource

From the announcement:

Regardless of our skill level we could all use a little help writing our best code. In this webinar I'll show how you can be guided by tools that work in your IDE, on your builder server or CI, and as you merge pull requests. Well look at a series of examples of real code - some with less-than-obvious issues and see how these tools work. We’ll get your code clean - and stay clean - with minimal effort and without being overloaded with warnings.

For extra context: this is a Sonar event, so Sonar tools will be shown.

Messaging with 0MQ (ZeroMQ) -- Richard Thomson

Utah C++ Programmers has released a new video:

Messaging with 0MQ (ZeroMQ)

by Richard Thomson

From the video description:

ZeroMQ (also known as ØMQ, 0MQ, or zmq) looks like an embeddable networking library but acts like a concurrency framework. It gives you sockets that carry atomic messages across various transports like in-process, inter-process, TCP, and multicast. You can connect sockets N-to-N with patterns like fan-out, pub-sub, task distribution, and request-reply. It's fast enough to be the fabric for clustered products. Its asynchronous I/O model gives you scalable multicore applications, built as asynchronous message-processing tasks. It has a score of language APIs and runs on most operating systems.

This month, Richard Thomson will give us an introduction to ZeroMQ. We'll look briefly at the low-level library libzmq before switching to the higher level C++ library zmqpp. We'll adapt a simple database for comic book issues into a CRUD server that responds to zmq messages.

https://www.youtube.com/watch?v=r8ip0wKQFGo

The Proxy Pattern -- Rainer Grimm

Untitled.pngPlaying the classics, at arm's length...

The Proxy Pattern

by Rainer Grimm

From the article:

A proxy controls access to another object, allowing you to perform additional operations before or after you access the original object. Sound familiar?

Which idiom is characteristic of C++? Right: RAII (Resource Acquisition Is Initialization). RAII is the C++ way to implement the Proxy Pattern. Here are the facts about the Proxy Pattern. ...

Using final in C++ to improve performance -- Niall Cooling

Screenshot_2022-11-16_163427.pngWhen having the "last word" makes stuff go faster...

Using final in C++ to improve performance

by Niall Cooling

From the article:

The final specifier was introduced in C++11 to ensure that either a class or a virtual function cannot be further overridden. However, as we shall investigate, this also allows them to perform an optimization known as devirtualization, improving runtime performance.

 

For Software Performance, the Way Data is Accessed Matters! -- Ivica Bogosavljević

Screenshot_2022-11-12_150618.pngAs Crocodile Dundee famously said, "That's not a loop, that's a loop." Just programmers having fun:

For Software Performance, the Way Data is Accessed Matters!

by Ivica Bogosavljević

From the article:

In our experiments with the memory access pattern, we have seen that good data locality is a key to good software performance. Accessing memory sequentially and splitting the data set into small-sized pieces which are processed individually improves data locality and software speed.

In this post, we will present a few techniques to improve the memory access pattern and increase data locality. The advantage of this approach is that the changes are localized in the algorithm itself, i.e. there is no need to change the data layout or the memory layout. The disadvantage is that the algorithms often become more difficult to understand and modify. ...

[... and deep inside the article ...]

Notice that, because the whole cache line is brought from the memory to the data cache, after accessing a[j][i] we can access a[j][i + 1]cheaply, since these two pieces of data belong to the same cache line. The problem in our case is that if n is large, access to a[j][i + 1] will come much after a[j][i] and by that time a[j][i + 1] will be evicted from the data cache. ...