acm-header
Sign In

Communications of the ACM

Blogroll


bg-corner

Forwarding references in C++
From Daniel Lemire's Blog

Forwarding references in C++

In C++, there are different ways to pass a value to a function. Typically, at any given time, an object in C++ ‘belongs’ to a single function. The various waysContinue...

Peer review is not the gold standard in science
From Daniel Lemire's Blog

Peer review is not the gold standard in science

Peer review as we know it today was introduced very late, over a century after the scientific revolution. It happened after Einstein’s time… arguably the most productive...

How fast can construct small list of strings in C for Python?
From Daniel Lemire's Blog

How fast can construct small list of strings in C for Python?

Python is probably the most popular programming language in the world right now. Python is easy to extend using C code. You may want to return from Python a small...

Should Node.js be built with ClangCL under Windows?
From Daniel Lemire's Blog

Should Node.js be built with ClangCL under Windows?

Under Windows, when using Visual Studio to build C++ code, there are two possible compiler strategies. The Visual Studio compiler (often referred to as MSVC) is...

Careful with Pair-of-Registers instructions on Apple Silicon
From Daniel Lemire's Blog

Careful with Pair-of-Registers instructions on Apple Silicon

Egor Bogatov is an engineer working on C# compiler technology at Microsoft. He had an intriguing remark about a performance regression on Apple hardware following...

Large language models (e.g., ChatGPT) as research assistants
From Daniel Lemire's Blog

Large language models (e.g., ChatGPT) as research assistants

Software can beat human beings at most games… from Chess to Go, and even poker. Large language models like GPT-4 offered through services such as ChatGPT allowContinue...

How do you recognize an expert?
From Daniel Lemire's Blog

How do you recognize an expert?

Go back to the roots: experience. An expert is someone who has repeatedly solved the concrete problem you are encountering. If your toilet leaks, an experienced...

How quickly can you break a long string into lines?
From Daniel Lemire's Blog

How quickly can you break a long string into lines?

Suppose that you receive a long string and you need to break it down into lines. Consider the simplified problems where you need to break the string into segments...

Science and Technology links (April 13 2024)
From Daniel Lemire's Blog

Science and Technology links (April 13 2024)

Our computer hardware exchange data using a standard called PCI Express. Your disk, your network and your GPU are limited by what PCI Express can do. Currently,...

Greatest common divisor,  the extended Euclidean algorithm, and speed!
From Daniel Lemire's Blog

Greatest common divisor, the extended Euclidean algorithm, and speed!

We sometimes need to find the greatest common divisor between two integers in software. The fastest way to compute the greatest common divisor might be the binary...

A simple algorithm to compute the square root of an integer, byte by byte
From Daniel Lemire's Blog

A simple algorithm to compute the square root of an integer, byte by byte

A reader asked me for some help in computing (1 – sqrt(0.5)) to an arbitrary precision, from scratch. A simpler but equivalent problem is to compute the squareContinue...

C++ web app with Crow: early scalability results
From Daniel Lemire's Blog

C++ web app with Crow: early scalability results

Last year, I looked at writing small “hello world” web applications in various programming languages (Go, JavaScript, Nim…). Go, using nothing but the standardContinue...

Science and Technology links (March 31 2024)
From Daniel Lemire's Blog

Science and Technology links (March 31 2024)

Large language models (e.g., ChatGPT) do better at legal questions that lawyers: Our empirical analysis benchmarks LLMs against a ground truth set by Senior Lawyers...

Fast and concise probabilistic filters in Python
From Daniel Lemire's Blog

Fast and concise probabilistic filters in Python

Sometimes you need to filter out or filter in data quickly. Suppose that your employer maintains a list of forbidden passwords or URLs or words. You may store them...

Passing recursive C++ lambdas as function pointers
From Daniel Lemire's Blog

Passing recursive C++ lambdas as function pointers

In modern C++, as in many popular languages, you can create ‘lambdas’. Effectively, they are potentially anonymous function instances that you can create on the...

How to read files quickly in JavaScript
From Daniel Lemire's Blog

How to read files quickly in JavaScript

Suppose you need to read several files on a server using JavaScript. There are many ways to read files in JavaScript with a runtime like Node.js. Which one is best...

How many political parties rule Canada? Fun with statistics
From Daniel Lemire's Blog

How many political parties rule Canada? Fun with statistics

Canada has several political parties with elected member of parliament: the Liberals, the Conservatives, the Bloc Québecois, de NDP and the Green. But do the behave...

Book review: Theft of Fire by Devon Eriksen
From Daniel Lemire's Blog

Book review: Theft of Fire by Devon Eriksen

When I was young, science fiction was the genre of choice for many engineers and scientists. But the genre declined significantly in recent years. Part of the problem...

Measuring energy usage: regular code vs. SIMD code
From Daniel Lemire's Blog

Measuring energy usage: regular code vs. SIMD code

Modern processor have fancy instructions that can do many operations at one using wide registers: SIMD instructions. Intel and AMD have 512-bit registers and associated...

JSON Parsing: Intel Sapphire Rapids versus AMD Zen 4
From Daniel Lemire's Blog

JSON Parsing: Intel Sapphire Rapids versus AMD Zen 4

Intel has release a new generation of server processors (Sapphire Rapids) while the latest AMD technology (Zen 4) is now broadly available. There are extensiveContinue...
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account