lock - это супер дешевая операция. Открытие/закрытие мьютекса - 25 нс. Боюсь, что проверка на null-pointer дороже обходится, но это интересный вопрос. Если вы выясните этот вопрос, что быстрее - будет прикольно узнать.
Но в контексте вашего вопроса траты на lock абсолютно смехотворны, так как затраты будут 50 - 100 нс. Это сравнимо с доступом к RAM.
Да, кстати, я часто сталкивался на собесах, что люди думают, что мьютекс реализован как-то программно на уровне ОС или вообще какая-то магия происходит в виртуальной машине. Но нет, это реализовано прямо на уровне железа, поэтому это настолько быстро.