Chalk me up as another firmly in the 'ssh is much faster than paramiko' camp. All of my experience with ansible thus far has been against a few VMs with VirtualBox as the provider, Ubuntu 13.04 as the host OS, and FreeBSD as the guest OS. SSH w/ControlMaster is significantly faster in my setup.
One of the things that strikes me as inefficient (for any of the protocols) is how many of the core modules handle a list of objects. Some of the package managers support list of packages in a single transaction, but modules like 'file' don't handle the creation of multiple directories without executing a new connection for each item in the list. Then given the speed difference between paramiko and ssh, this really takes a toll.
For instance, given this play (and yes, I know there is a more efficient way to do this):
- name: Create a bunch of directories
file: dest={{ item }} state=directory
with_items:
- /tmp/a
- /tmp/b
...
- /tmp/z
With paramiko, this takes 2s.
With ssh, this takes 0.38s.