acm-header
Sign In

Communications of the ACM

Blogroll


bg-corner

Science and Technology links (February 9th, 2018)
From Daniel Lemire's Blog

Science and Technology links (February 9th, 2018)

We shed 50 million skin cells every day. A mutant crayfish reproduces by cloning. To my knowledge, this might be the largest animal to reproduce by cloning. Before...

Don’t underestimate the nerds
From Daniel Lemire's Blog

Don’t underestimate the nerds

I’m a little nerdy. According to my wife, I even look like a nerd. I am not very big. I have a long resume posted online, and I’ll proudly post my follower count...

Science and Technology links (February 2nd, 2018)
From Daniel Lemire's Blog

Science and Technology links (February 2nd, 2018)

Most mammals, including human beings, age according to a Gompertz curve. It is a fancy way of saying that your risk of death goes up exponential with age. Naked...

Picking distinct numbers at random: benchmarking a brilliant algorithm (JavaScript edition)
From Daniel Lemire's Blog

Picking distinct numbers at random: benchmarking a brilliant algorithm (JavaScript edition)

Suppose you want to choose m distinct integers at random within some interval ([0,n)). How would you do it quickly? I have a blog post on this topic dating back...

Science and Technology links (January 26th, 2018)
From Daniel Lemire's Blog

Science and Technology links (January 26th, 2018)

We have reached “peak coal” meaning that coal usage is going to diminish in the coming years. McGill professor Ishiang Shih has been accused by the US government...

Initializing arrays quickly in Swift: be wary of Sadun’s initializers
From Daniel Lemire's Blog

Initializing arrays quickly in Swift: be wary of Sadun’s initializers

Swift is Apple’s go-to programming language. It is the new default to build applications for iPhones. It also runs well on Linux. It is not as low-level as C or...

Microbenchmarking is hard: virtual machine edition
From Daniel Lemire's Blog

Microbenchmarking is hard: virtual machine edition

To better understand software performance, we often use small controlled experiments called microbenchmarks. In an earlier post, I remarked that it is hard to reason...

Science and Technology links (January 19th, 2018)
From Daniel Lemire's Blog

Science and Technology links (January 19th, 2018)

The Raspberry Pi 3, a $15-dollar computer that I use for various fun projects, is 15 times more powerful than the Cray-1 supercomputer, but it is 130,000 timesContinue...

Ridiculously fast base64 encoding and decoding
From Daniel Lemire's Blog

Ridiculously fast base64 encoding and decoding

Computers store data as streams of bits. Binary files like image, audio or video files are allowed to contain just about any sequence of bits. However, we alsoContinue...

Microbenchmarking calls for idealized conditions
From Daniel Lemire's Blog

Microbenchmarking calls for idealized conditions

Programmers use software benchmarking to measure the speed of software. We need to distinguish system benchmarking, where one seeks to measure the performance of...

Science and Technology links (January 12th, 2018)
From Daniel Lemire's Blog

Science and Technology links (January 12th, 2018)

A few years ago, researchers in Danemark expressed concerns regarding high concentrations of pesticides that are showing up in urine samples of Danish mothers and...

How fast can you bit-interleave 32-bit integers? (SIMD edition)
From Daniel Lemire's Blog

How fast can you bit-interleave 32-bit integers? (SIMD edition)

In a previous post, I asked how fast one could interleave the bits between two 32-bit integers. That is, given 0b1011 (11 in decimal) and 0b1100 (12 in decimal)...

How fast can you bit-interleave 32-bit integers?
From Daniel Lemire's Blog

How fast can you bit-interleave 32-bit integers?

A practical trick in software is to “bit-interleave” your data. Suppose that I have two 4-bit integers like 0b1011 (11 in decimal) and 0b1100 (12 in decimal). I...

Science and Technology links (January 5th, 2018)
From Daniel Lemire's Blog

Science and Technology links (January 5th, 2018)

You still have to burn more energy creating solar panels than solar panels can give back in a useful lifetime. Tyler Cowen writes: There is now a doctrine of what...

Can 32-byte alignment alleviate 4K aliasing?
From Daniel Lemire's Blog

Can 32-byte alignment alleviate 4K aliasing?

In my previous post, I considered some performance problems that can plague simple loops that read and write data… for (int i = 0; i < a.length; ++i) { a[i] +=Continue...

Don’t make it appear like you are reading your own recent writes
From Daniel Lemire's Blog

Don’t make it appear like you are reading your own recent writes

Richard Statin recently published a Java benchmark where the performance of a loop varies drastically depending on the size of the arrays involved. The loop isContinue...

Year 2017: technological highlights
From Daniel Lemire's Blog

Year 2017: technological highlights

DeepStack and Libratus become the first computer programs to beat professinal poker players. We are using synthetic cartilage to help people with arthritis. Stem...

Multicore versus SIMD instructions: the “fasta” case study
From Daniel Lemire's Blog

Multicore versus SIMD instructions: the “fasta” case study

Setting aside graphics processors, most commodity processors support at least two distinct parallel execution models. Most programmers are familiar with the multicore...

Science and Technology links (December 29th, 2017)
From Daniel Lemire's Blog

Science and Technology links (December 29th, 2017)

It is often believed that, in the developed world, more land is used for human beings (cities, agriculture) as time goes by. That is not true: Forests are spreading...

Personal reflections on 2017
From Daniel Lemire's Blog

Personal reflections on 2017

Year 2017 is coming to an end. As a kid, I would have surely imagined that by 2017, I would be living in space. But then I can chat with Amazon’s servers through...
Sign In for Full Access
» Forgot Password? » Create an ACM Web Account