acm-header
Sign In

Communications of the ACM

Blogroll


bg-corner

19 random digits is not enough to uniquely identify all human beings
From Daniel Lemire's Blog

19 random digits is not enough to uniquely identify all human beings

Suppose that you assigned everyone an 19 digit number. What is the probability that two human beings would have the same number? It is an instance of the Birthday...

Consider using constexpr static function variables for performance in C++
From Daniel Lemire's Blog

Consider using constexpr static function variables for performance in C++

When programming, we often need constant variables that are used within a single function. For example, you may want to look up characters from a table. The following...

Science and Technology links (March 11 2023)
From Daniel Lemire's Blog

Science and Technology links (March 11 2023)

Robert Metcalfe won the Turing Award (the ‘Computer Science Nobel Prize’) for his work on early networking. According to DBLP, Metcalfe published 11 journal articles...

Programming-language popularity by GitHub pull requests
From Daniel Lemire's Blog

Programming-language popularity by GitHub pull requests

GitHub is probably the most popular software repository in the world. One important feature on GitHub is the ‘pull request’: we often contribute to a piece of software...

Are your memory-bound benchmarking timings normally distributed?
From Daniel Lemire's Blog

Are your memory-bound benchmarking timings normally distributed?

When optimizing software, we routinely measure the time that takes a given function or task. The typical assumption is that we get a normal distribution, and so...

What are we going to do about ChatGPT?
From Daniel Lemire's Blog

What are we going to do about ChatGPT?

Generative artificial intelligence, and in particular ChatGPT, has taken the world by storm. Some intellectuals are proposing we create a worldwide ban on advanced...

C++20: consteval and constexpr functions
From Daniel Lemire's Blog

C++20: consteval and constexpr functions

Optimizing compilers seek try to push as much of the computation as possible at compile time. In modern C++, you can declare a function as ‘constexpr’, meaningContinue...

Can GPT pass my programming courses?
From Daniel Lemire's Blog

Can GPT pass my programming courses?

Professeur Caplan reports that ChatGPT, the new AI that is all the rage, can pass his economics midterm and get an A. What about computer science ? I submittedContinue...

Counting cycles and instructions on ARM-based Apple systems
From Daniel Lemire's Blog

Counting cycles and instructions on ARM-based Apple systems

In my blog post Counting cycles and instructions on the Apple M1 processor, I showed how we could have access to “performance counters” to count how many cycles...

Runtime asserts are not free
From Daniel Lemire's Blog

Runtime asserts are not free

When writing software in C and C++, it is common to add C asserts to check that some conditions are satisfied at runtime. Often, it is a simple comparison between...

Science and Technology links (March 11 2023)
From Daniel Lemire's Blog

Science and Technology links (March 11 2023)

In 1500, China was the largest economy in the world, followed by India and France. The USA did not exist yet. In 1700, 4% of human beings lived in France. In the...

Trimming spaces from strings faster with SVE on an Amazon Graviton 3 processor
From Daniel Lemire's Blog

Trimming spaces from strings faster with SVE on an Amazon Graviton 3 processor

Programmers sometimes need to trim, or remove, characters, such as spaces from strings. It might be a surprising expensive task. In C, the following function is...

Float-parsing benchmark: Regular Visual Studio, ClangCL and Linux GCC
From Daniel Lemire's Blog

Float-parsing benchmark: Regular Visual Studio, ClangCL and Linux GCC

Windows users have choices when it comes to C++ programming. You may choose to stick with the regular Visual Studio. If you prefer, Microsoft makes available ClangCL...

Regular Visual Studio versus ClangCL
From Daniel Lemire's Blog

Regular Visual Studio versus ClangCL

If you are programming in C++ using Microsoft tools, you can use the traditional Visual Studio compiler. Or you can use LLVM as a front-end (ClangCL). Let us compare...

Computing the UTF-8 size of a Latin 1 string quickly (AVX edition)
From Daniel Lemire's Blog

Computing the UTF-8 size of a Latin 1 string quickly (AVX edition)

Computers represent strings using bytes. Most often, we use the Unicode standard to represent characters in bytes. The universal format to exchange strings online...

Science and Technology links (February 12 2023)
From Daniel Lemire's Blog

Science and Technology links (February 12 2023)

Kenny finds that the returns due to education are declining. Rich countries are spending more on education, with comparatively weaker test results. It costs more...

Bit Hacking (with Go code)
From Daniel Lemire's Blog

Bit Hacking (with Go code)

At a fundamental level, a programmer needs to manipulate bits. Modern processors operate over data by loading in ‘registers’ and not individual bits. Thus a programmer...

Serializing IPs quickly in C++
From Daniel Lemire's Blog

Serializing IPs quickly in C++

On the Internet, we often use 32-bit addresses which we serialize as strings such as 192.128.0.1. The string corresponds to the Integer address 0xc0800001 (3229614081...

Move or copy your strings? Possible performance impacts
From Daniel Lemire's Blog

Move or copy your strings? Possible performance impacts

You sometimes want to add a string to an existing data structure. For example, the C++17 template ‘std::optional’ may be used to represent a possible string value...

International domain names: where does https://meßagefactory.ca lead you?
From Daniel Lemire's Blog

International domain names: where does https://meßagefactory.ca lead you?

Originally, the domain part of a web address was all ASCII (so no accents, no emojis, no Chinese characters). This was extended a long time ago thanks to something...
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account