The example you provided works quite fast on my computer (with the GL viewport). Could you specify what exactly is the problem?