From Schneier on Security
Artificial intelligence (AI) has been billed as the next frontier of humanity: the newly available expanse whose exploration
…
B. Schneier| February 29, 2024
We sometimes have to work a large quantity of floating-point numbers. This volume can be detrimental to performance. Thus we often want to compress these numbers...Daniel Lemire From Daniel Lemire's Blog | September 2, 2024 at 06:52 PM
Most programming languages support floating-point numbers. You typically have the ability to turn a string into a floating-point number. E.g., “3.1416” could be...Daniel Lemire From Daniel Lemire's Blog | August 26, 2024 at 11:34 AM
We often generate random integers. Quite often these numbers must be within an interval: e.g., an integer between 0 and 100. One application is a random shuffle...Daniel Lemire From Daniel Lemire's Blog | August 16, 2024 at 10:11 PM
JSON (JavaScript Object Notation) is a popular format for storing and transmitting data. It uses human-readable text to represent structured data in the form of...Daniel Lemire From Daniel Lemire's Blog | August 13, 2024 at 12:12 PM
AMD Zen 4 and Zen 5, as well as server-side recent Intel processors, support an advanced set of instructions called AVX-512. They are powerful SIMD (Single Instruction...Daniel Lemire From Daniel Lemire's Blog | August 3, 2024 at 07:26 PM
People who should know better often underestimate how fast our storage capacity has grown. We have been able to get 1 TB of storage on iPhones for the last three...Daniel Lemire From Daniel Lemire's Blog | July 28, 2024 at 11:39 AM
Storage costs are plummeting like a skydiver in freefall—between 10 and 100 times cheaper with each passing decade. Meanwhile, the programmer population is growing...Daniel Lemire From Daniel Lemire's Blog | July 27, 2024 at 05:35 PM
Docker is a standard to deploy software on the cloud. Developers start with an existing image and add their own code before deploying their systems. How big are...Daniel Lemire From Daniel Lemire's Blog | July 27, 2024 at 01:31 PM
We sometimes use binary executable which can span megabytes. I wondered: how much text is contained in these binary files? To find out, I wrote a Python scriptContinue...Daniel Lemire From Daniel Lemire's Blog | July 26, 2024 at 08:10 PM
For better performance in software, we avoid unnecessary copies. To do so, we introduce references (or pointers). An example of this ideas in C++ is the std::string_view...Daniel Lemire From Daniel Lemire's Blog | July 26, 2024 at 11:25 AM
Recent versions of C++ (C++20) have a new feature: concepts. A concept in C++ is a named set of requirements that a type must satisfy. E.g., ‘act like a string’...Daniel Lemire From Daniel Lemire's Blog | July 22, 2024 at 11:13 AM
Earlier this year, both major Web engines (WebKit/Safari and Chromium/Chrome/Edge/Brave) accelerated HTML parsing using SIMD instructions. These ‘SIMD’ instructions...Daniel Lemire From Daniel Lemire's Blog | July 20, 2024 at 05:30 PM
The world of commodity processor is roughly divided in two: x64 chips for servers and PCs, and ARM processors for mobile devices. However, ARM chips increasingly...Daniel Lemire From Daniel Lemire's Blog | July 10, 2024 at 04:43 PM
Recently, the two major Web engines (WebKit and Chromium) adopted fast SIMD routines to scan HTML content. The key insight is to use vectorized classification (Langdale...Daniel Lemire From Daniel Lemire's Blog | July 5, 2024 at 03:44 PM
Copying data in software is cheap, but it is not at all free. As you start optimizing your code, you might find that copies become a performance bottleneck. Let...Daniel Lemire From Daniel Lemire's Blog | June 22, 2024 at 03:14 PM
We have been working on a fast library to validate and transcode Unicode and other formats such as base64 in C++: simdutf. We wondered: could we achieve the same...Daniel Lemire From Daniel Lemire's Blog | June 20, 2024 at 01:25 PM
If you must multiply matrices, you should use dedicated libraries. However, we sometimes need to roll our own code. In C++, you can quickly write your own Matrix...Daniel Lemire From Daniel Lemire's Blog | June 13, 2024 at 05:11 PM
Modern processors have instructions to process several bytes at once. Effectively all processors have the capability of processing 16 bytes one once. These instructions...Daniel Lemire From Daniel Lemire's Blog | June 8, 2024 at 12:55 AM
In software, we often represent strings by surrounding them with quotes ("). What happens if the string itself contains quotes? We then need to escape the string...Daniel Lemire From Daniel Lemire's Blog | May 30, 2024 at 11:48 PM
In the quest for software optimization, a trusty companion is the sampling profiler, a tool available in most programming languages. These profilers work unobtrusively...Daniel Lemire From Daniel Lemire's Blog | May 30, 2024 at 03:33 PM