Not an exhaustive benchmark by any means, but what I see…

Given a CVS repository accessible by the CVS “pserver” protocol on a company intranet, and a box gated via SSH to the intranet from the internet, which usage is most optimal? The CVS pserver protocol supports compression (i.e. “cvs -z3 co”). The SSH tunnel also supports compression (i.e. “ssh -a -C -L hosthere:2401:hostthere:2401 user@sshhost”). Is using compression on the SSH tunnel more or less efficient that using compression on the CVS protocol?

No compression on a large (many files, and many large files) checkout:

time cvs -d :pserver:preston.bannister@hosthere:/archive co xxx
....
real    18m33.915s
user    0m1.620s
sys 0m4.492s

Compression on the SSH tunnel, no CVS compression:

time cvs -z0 -d :pserver:preston.bannister@hosthere:/archive co xxx
....
real    8m22.575s
user    0m1.676s
sys 0m4.632s

No compression on the SSH tunnel, using CVS compression:

 time cvs -z3 -d :pserver:preston.bannister@hosthere:/archive co asg
....
real    8m35.703s
user    0m4.544s
sys 0m4.316s

Pretty close to a wash. I’d guess that applying compression to the SSH tunnel (when connecting across the internet to an intranet) is probably more useful in the general case. Since the specific case of applying compression the the CVS protocol generates no marked advantage, looks like the general case wins.

I took “cvs -z3” out of my .cvsrc file. :)