benchmark done (with several improvements of the implementation)