You’re using Python, an infamously slow language, inside of another emulated language, and the way you draw is slower than even just using canvas’s builtin drawing functions.
The physics engine is definitely the fastest here, considering it doesn’t have to loop anything per individual pixel.
Sorry, but there is nothing surprising here. At least one of the two things I mentioned have to go.