CP is an aggregate number. Assuming the same period in battle and the same trainer actions and effectiveness, the one with the higher damage stat (one of the three numbers that CP aggregates) does the more damage.
As CP also aggregates health and defense, it basically offers a calculation as to damage and longevity, meaning it is a rough estimation as to a pokemon's total damage output in a battle (but not, per se, "dps"), as longevity strictly speaking means "amount of seconds lasting in a battle".
The reason CP can be so variable despite the IV's in this game being less in kind (3 as opposed to 6) and span (1-15 as opposed to 0-31) is because it CP aggregates 3 numbers affected by IV's, while in the games IV's have a 1:1 effect at level 100 unless a nature multiplies their effect.