acm-header
Sign In

Communications of the ACM

Blogroll


bg-corner

Science and Technology links (May 22nd 2021)
From Daniel Lemire's Blog

Science and Technology links (May 22nd 2021)

Most computer chips today in flagship phones and computers use a process based on a 5 nm or larger resolution. Finer resolutions usually translate into lower energy...

Counting the number of matching characters in two ASCII strings
From Daniel Lemire's Blog

Counting the number of matching characters in two ASCII strings

Suppose that you give me two ASCII strings having the same number of characters. I wish to compute efficiently the number of matching characters (same position,...

Converting binary integers to ASCII characters: Apple M1 vs AMD Zen2
From Daniel Lemire's Blog

Converting binary integers to ASCII characters: Apple M1 vs AMD Zen2

Programmers often need to write integers as characters. Thus given the 32-bit value 1234, you might need a function that writes the characters 1234. We can useContinue...

Science and Technology links (May 15th 2021)
From Daniel Lemire's Blog

Science and Technology links (May 15th 2021)

There were rainforests near the south pole 90 million years ago. Though commercial exchanges are typically win-win for both the buyer and the seller, people tend...

Constructing arrays of Boolean values in Java
From Daniel Lemire's Blog

Constructing arrays of Boolean values in Java

It is not uncommon that we need to represent an array of Boolean (true or false) values. There are multiple ways to do it. The most natural way could be to construct...

The benefits of locality in random access
From Daniel Lemire's Blog

The benefits of locality in random access

Modern computers have several layers of memory, from fast cache (sometimes called L1) all the way to main memory (RAM). A lot of performance-critical code relies...

Science and Technology links (May 1st 2021)
From Daniel Lemire's Blog

Science and Technology links (May 1st 2021)

Growing your own food could lower your carbon footprint by 3-5%. In recent years, we have acquired the ability to measure biological age: your chronological age...

Ideal divisors: when a division compiles down to just a multiplication
From Daniel Lemire's Blog

Ideal divisors: when a division compiles down to just a multiplication

The division instruction is one of the most expensive instruction in your CPU. Thus optimizing compilers often compile divisions by known constants down to a multiplication...

Some useful regular expressions for programmers
From Daniel Lemire's Blog

Some useful regular expressions for programmers

In my blog post, My programming setup, I stressed how important regular expressions are to my programming activities. Regular expressions can look intimidatingContinue...

A trichotomy of intellectual activity
From Daniel Lemire's Blog

A trichotomy of intellectual activity

I like to separate intellectual work among three categories: Emulation: the reproduction or direct application of existing ideas. Most academic work and maybe most...

Science and Technology links (April 17th 2021)
From Daniel Lemire's Blog

Science and Technology links (April 17th 2021)

Moderna built their COVID 19 vaccine without having the virus on site. They viewed it as a software problem. Human and mice with red hair have elevated pain thresholds...

How fast can you sort arrays of integers in Java?
From Daniel Lemire's Blog

How fast can you sort arrays of integers in Java?

Programming languages come with sorting functions by default. We can often do much better. For example, Downs has showed that radix sort can greatly surpass default...

My programming setup
From Daniel Lemire's Blog

My programming setup

As my GitHub profile indicates, I program almost every single working day of the year. I program in C++, C, Go, Java, JavaScript, Python, R, Swift, Rust, C#; even...

Science and Technology links (March 27th 2021)
From Daniel Lemire's Blog

Science and Technology links (March 27th 2021)

Scientists, including climate-science researchers, often travel to faraway places for conferences. Attending a live conference is time consuming and expensive.Continue...

Counting cycles and instructions on the Apple M1 processor
From Daniel Lemire's Blog

Counting cycles and instructions on the Apple M1 processor

When benchmarking software, we often start by measuring the time elapsed. If you are benchmarking data bandwidth or latency, it is right measure. However, if you...

Apple’s M1 processor and the full 128-bit integer product
From Daniel Lemire's Blog

Apple’s M1 processor and the full 128-bit integer product

If I multiply two 64-bit integers (having values in [0, 264)), the product requires 128 bits. Intel and AMD processors (x64) can compute the full (128-bit) product...

Science and Technology links (March 6th 2021)
From Daniel Lemire's Blog

Science and Technology links (March 6th 2021)

Increasing schooling does not improve social outcomes at a population level. Venitian glass was made near Venice as early as 450 BC. It spread worldwide through...

How does your programming language handle “minus zero” (-0.0)?
From Daniel Lemire's Blog

How does your programming language handle “minus zero” (-0.0)?

The ubiquitous IEEE floating-point standard defines two numbers to represent zero, the positive and the negative zeros. You also have the positive and negativeContinue...

Parsing Floating-point Numbers Really Fast in C#
From Daniel Lemire's Blog

Parsing Floating-point Numbers Really Fast in C#

Programmers often write out numbers as strings (e.g., 3.1416) and they want to read back the numbers from the string. If you read and write JSON or CSV files, you...

Science and Technology links (February 13th 2021)
From Daniel Lemire's Blog

Science and Technology links (February 13th 2021)

Researchers make inexpensive transparent wood. Our cells produce energy using their mitochondria. Researchers show that you can efficiently enrich cells with mitochondria...
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account