matplotlib/matplotlib — pull request #3393 by jbmohler (2014-08-21 16:07:06+00:00)
Title: 2 draw optimization -- pre-parse colors, short-circuit path construction code

Profiling has revealed two small but noticeable hits in drawing performance. These are addressed by this PR. Each commit represents about a 4% improvement at draw-time and they add to 8%. I'm not sure if this passes tests so this is a travis-ci probe as well as a request for comment.

My timings were done like so:
```
from __future__ import print_function
import timeit
import numpy
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure

POINTS = 500

figure = Figure(figsize=(6, 6), dpi=72, facecolor=(1, 1, 1), edgecolor=(0, 0, 0))
ax = figure.add_subplot(1, 1, 1)

scat = ax.scatter(numpy.arange(POINTS), numpy.sin(numpy.arange(POINTS)))

canvas = FigureCanvas(figure)

print(timeit.timeit('canvas.print_to_buffer()', setup='from __main__ import canvas', number=100))
```