There is no simple answer to that.
However, in general, I find that the SQL Server optimizer does a much better job of optimizing EXISTS clauses than the equivalent joins.
Also, in the end, an EXISTS clause is often much clearer for someone else reading the code, as it generally shows the intent of the code better. Finally, it often keeps the existence test within a single predicate, which again avoids confusing the rest of the query with the existence aspects.