acm-header
Sign In

Communications of the ACM

Blogroll


bg-corner

Science and Technology links (December 7th 2019)
From Daniel Lemire's Blog

Science and Technology links (December 7th 2019)

Incredibly, there is a new simpler way to solve the quadratic formula. I used to rely on the completion of the square, but this is better! There is a video report...

AMD Zen 2 and branch mispredictions
From Daniel Lemire's Blog

AMD Zen 2 and branch mispredictions

Intel makes some of the very best processors many can buy. For a long time, its main rival (AMD) failed to compete. However, its latest generation of processors...

Instructions per cycle: AMD Zen 2 versus Intel
From Daniel Lemire's Blog

Instructions per cycle: AMD Zen 2 versus Intel

The performance of a processor is determined by several factors. For example, processors with a higher frequency tend to do more work per unit of time. PhysicsContinue...

Better computational complexity does not imply better speed
From Daniel Lemire's Blog

Better computational complexity does not imply better speed

A recent magazine article presents a theoretical result: Harvey and van der Hoeven have shown that you can multiply two n-bit integers using O(n log n) complexity...

Memory parallelism: AMD Rome versus Intel
From Daniel Lemire's Blog

Memory parallelism: AMD Rome versus Intel

When thinking about “parallelism”, most programmers think about having multiple processors. However, even a single core in a modern processor has plenty of parallelism...

Cloud computing: a story of incentives
From Daniel Lemire's Blog

Cloud computing: a story of incentives

Many businesses today run “in the cloud”. What this often means is that they have abstracted out the hardware entirely. Large corporations like Amazon, Google,Continue...

Science and Technology links (November 16th 2019)
From Daniel Lemire's Blog

Science and Technology links (November 16th 2019)

We have new technology to do genetic engineering on human beings (CRISPR). In a small clinical trial, the researchers tested it on live human subjects and found...

Unrolling your loops can improve branch prediction
From Daniel Lemire's Blog

Unrolling your loops can improve branch prediction

Modern processors predict branches (e.g., if-then clauses), often many cycles a ahead of time. When predictions are incorrect, the processor has to start again,...

Adding a (predictable) branch to existing code can increase branch mispredictions
From Daniel Lemire's Blog

Adding a (predictable) branch to existing code can increase branch mispredictions

Software is full of “branches”. They often take the form of if-then clauses in code. Modern processors try to predict the result of branches often long before evaluating...

Parsing numbers in C++: streams, strtod, from_chars
From Daniel Lemire's Blog

Parsing numbers in C++: streams, strtod, from_chars

When programming, we often want to convert strings (e.g., “1.0e2”) into numbers (e.g., 100). In C++, we have many options. In a previous post, I reported that it...

Science and Technology links (October 26th 2019)
From Daniel Lemire's Blog

Science and Technology links (October 26th 2019)

People who were the oldest in the classes in school tend to be more confident and to take more risks. At the University of Montreal, about 32% of the students are...

How expensive is it to parse numbers from a string in C++?
From Daniel Lemire's Blog

How expensive is it to parse numbers from a string in C++?

In software, we frequently have to parse numbers from strings. Numbers are typically represented in computers as 32-bit or 64-bit words whereas strings are variable...

Benchmarking is Hard: Processors Learn to Predict Branches
From Daniel Lemire's Blog

Benchmarking is Hard: Processors Learn to Predict Branches

A lot of software is an intricate of branches (if–then clauses). For performance reasons, modern processors predict the results of these branches. In my previous...

Mispredicted branches can multiply your running times
From Daniel Lemire's Blog

Mispredicted branches can multiply your running times

Modern processors are superscalar, meaning that they can execute many instructions at once. For example, some processors can retire four or six instructions per...

Science and Technology (October 12th 2019)
From Daniel Lemire's Blog

Science and Technology (October 12th 2019)

In many countries, like Canada, there is relatively little private (business) research. Meanwhile, other research indicates that private research is precisely the...

The price of  a MacBook Air worldwide
From Daniel Lemire's Blog

The price of a MacBook Air worldwide

Apple sells identical laptops worldwide. There might be small differences with respect to power adaptors and so forth, but the laptops are the same internally.Continue...

Science and Technology links (September 28th 2019)
From Daniel Lemire's Blog

Science and Technology links (September 28th 2019)

Researchers have effectively rejuvenated the damaged skin of mice by using “exosomes”. These are packages that cells send in their environment, and it appears that...

Doubling the speed of std::uniform_int_distribution in the GNU C++ library
From Daniel Lemire's Blog

Doubling the speed of std::uniform_int_distribution in the GNU C++ library

The standard way in C++ to generate a random integer in a range is to call the std::uniform_int_distribution function. The current implementation of std::uniform_int_distribution...

Science and Technology links (September 21st 2019)
From Daniel Lemire's Blog

Science and Technology links (September 21st 2019)

Amputees suffer from lack of sensory feedback from the missing limbs. Researchers found it beneficial to provide artificial sensory feedback. More economicallyContinue...

My kindergarten story
From Daniel Lemire's Blog

My kindergarten story

Though I was a straight-A student for most of my high school and college years, I failed kindergarten. I have told this story many times but I realize that I have...
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account