Currently merge.unique_variable does this
if equals is None:
out = out.compute()
for var in variables[1:]:
equals = getattr(out, compat)(var)
if not equals:
break
out (=variables[0]) is always computed though it may not be necessary.
One solution would be to loop through once checking attrs, shapes and _data. If these checks were satisfied, then we execute the above code