I hate to disagree even slightly with our esteemed Dr. Stone, but there is really no downside to using equality constraints in the manner mikeylp is proposing. I personally have a slight preference for equality constraints (or, in the case of convex/concave expressions, inequality constraints) over expression holders. Expressions are good but I worry sometimes that supporting both assignment = and equality == causes more problems than it solves.
CVX’s presolver will take care of the extra variables, eliminating them if it makes sense to do so. Do not assume that it does, however! There may be good reasons to keep them around.
In general, please do not spend a lot of time worrying about optimizing your CVX models for performance. CVX is not intended to be a tool for building fast models, it is a tool for building models fast. Yes, sometimes there will be changes that result in significant shifts in performance, but you never really know where those are going to crop up before you hit them. Premature optimization is bad coding practice, and it’s bad model building practice too.