That behavior is expected, indeed.
There are 3 ways to speed things up:
OpenCV can benefit from an Intel processor, if you have one you can install Intel IPP. You might have to compile OpenCV on your own to enable this feature.
Use OpenCV's GPU module. The method
gpu::Canny()
provides an implementation of Canny that runs on the GPU. OpenCV can run certain algorithms on the GPU if your video card supports CUDA or OpenCL. You might have to compile OpenCV on your own to enable this feature.Investigate a different approach: sometimes a different set of algorithms can achieve the same result in a smaller amount of time. I talked briefly about this on your other question.