My personal view of C as a programming language

For some reason, as far as I can tell, people do not share their experience with, and views of, C so much. At least not in blogs. That is a bit surprising, given that Tiobe, for example, would rank it as the most popular programming language. Perhaps the typical C programmer simply isn’t very active in communities like these.

Continue reading C


Benchmarking hash table implementations – Java

Java implementations

It was pointed out that some Java hash table implementations were supposed to be faster than the native HashMap. This test was run enabling the Java process access to all 8 virtual cores, which was not the case in the previous benchmarks.


  • Java native HashMap – Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
  • Java Colt – v1.0.2
  • Java Trove – v3.0.3

Continue reading Benchmarking hash table implementations – Java

Benchmarking hash table implementations

A first iteration of benchmarks of different hash table implementations.


Tested implementations

  • C++11 unordered_map – Apple LLVM version 5.0 (clang-500.2.79) (based on LLVM 3.3svn)
  • C++ Google DenseHash – Google SparseHash v2.0.2
  • Java native HashMap – Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
  • C khash – Above clang environment with khash v0.2.8
  • Lua builtin – LuaJIT v2.0.3

Continue reading Benchmarking hash table implementations

Benchmarking the benchmarks (part 3)

This is a continuation of the previous post

Optimizing the operating system

First a few words about optimization in general.

There is a lot to be said for default configurations. They tend to be very well tested and (hopefully) they are balanced for good all-round performance. Do underestimate the value of this. Introducing an optimization may look great in your synthetic test case, but could very well lower the performance in an actual real life scenario. Or it could improve performance for 95% of your users but leave the remaining 5% complaining about service failures. None of the 95% of the users are going to give you a gold medal for saving some servers, but you can be sure that users with problems will do the opposite.

Continue reading Benchmarking the benchmarks (part 3)

Intermezzo about stability and compliance (part 2)

The serious problems

I reported the problems to the G-WAN developer, who began by very kindly thanking me for my effort and asked for the details. After of course sharing all the findings, he returns after an hour claiming he can’t for his life understand what I mean. Since there is no archive of old versions he will now pretend like it never happened. I find this reaction very sad.

The author claims the problems were solved independently a couple of days before being reported. This does not of course change the fact the v2.10.6 version and possibly others were affected, which is something the author continues to refuse to acknowledge.

I would encourage people to keep their current versions in some archive to check the following out if they are interested.

Below is on an updated Arch Linux 3.0.6, 64-bit, using G-WAN v2.10.6 from October 6. Versions available from this afternoon should be patched by the vendor.

Denial of service

Continue reading Intermezzo about stability and compliance (part 2)