So I have been playing around with Cython, which is an optimizing static compiler for Python that allows users to write python extensions in C, as a possible method to improve my algorithm performance for the discrete optimization class I have been taking. In theory, by compiling the code before execution, the overhead associated with the python interpreter is reduced, which results in performance gains. An additional benefit of the package is that it can run unmodified python code, so it is pretty easy to convert existing programs to cython. I figured I would drop in my latest implementation of the Tabu Search algorithm that I wrote to solve the Traveling Salesman Problem (TSP) and compare the run-times between the two implementations. The results of the comparison are below:
As you can (or can’t see) there is hardly a difference between the two implementations. I was initially encouraged by the fact that the Cython implementation was running a second or two faster for the smaller TSP problems, but as the problem size increased, the time savings remained in the range of a few seconds, which doesn’t help at all. I imagine that If I go in and re-write/translate the existing python code in the cython extension to C, I can probably see some performance gains, but merely dropping python code into a cython extension only has limited benefits. I might go back and give this a shot, but for now I am going to keep plugging away in python.