Elite software development.

Robin's blog

D-Bus Performance Report

D-Bus is a software framework for inter-process communication. It is integral to the operation of modern Linux. At present, its performance is suspect.

The attached document (draft version 0.9.9) summarises a series of experiments and benchmarks which were performed to characterise the performance of D-Bus.

Truly Innovative Businesses Do Not Solve Customer Pain

Business plan guidelines often call for an explanation of the customer "pain" that the proposed business is to relieve. This thinking is too narrow. Large disruptive ideas often start with an idea which does not intend to address a pain point.

Tech Startup Accelerators: Show Me The Money!

There is a formula for running a successful tech startup accelerator. It was developed by the prototypical accelerator, Y-Combinator. Some accelerator programmes veer from the formula in an important way: they do not provide funding. This is a fatal mistake.

Top 10 Most-Used Haskell Packages

This article lists the top 10 most used Haskell packages and summarizes each.

'MmRelive' - Collect Stats on Memory Management Activity

MmRelive is a software utility used to 're-live' the memory management activities of a process. Use it to collect useful statistics on the memory usage of a program. It is especially useful for discovering high water marks.

I wrote 'MmRelive' in Haskell, but it can be used by non-programmers.

Fast Multicast IPC on Linux and Unix

IPC frameworks on Linux come in two varieties: complicated and nonexistent. This article presents the design for a very fast IPC framework that uses shared memory and supports multicast messaging. The design is flexible and not complicated.

In response to the complexity and performance of the D-Bus IPC framework, my employer, Collabora, asked me to investigate options for improving it.

Tech Startups: Foundries and Incubators

Mac OS 10.6 Is Way Faster Than 10.5

My iMac's hard disk failed. It was under AppleCare warranty, so the service personnel replaced it. Previously, Mac OS 10.5 was on the old HDD. The new HDD came with 10.6 installed. Upgrade! Though, it's a bother because the system back up worked on 10.5, but does not fully work on 10.6. So, I'm having to replace some apps, and reinstall stuff, and reconfigure stuff.

In case you were wondering: Mac OS 10.6 is significantly faster than 10.5! I guess there was a bright side to my HDD failure.

Why Your Shared Library Code Is Slow

Position Independent Code

When you compile a shared library (with -fPIC, in the case of gcc), you are specifying that you want the compiler to generate position independent code.

Position independent code never uses straightforward machine addressing modes to access global variables, static variables, or non-static functions. Instead, position independent code accesses these kinds of data indirectly.

PLTs and the GOT

Data Copying Rate is not Constant

Copy n bytes of data, and it takes t time. Copy 2n bytes of data, and it takes 2t time, right? Not necessarily.

In-memory data-copying performance is not so straightforward. This article explains how the rate of data copying changes with the amount of data copied.

Syndicate content