In my job we prefer branch per feature. It is not about efficiency, but rather about coworking - it is easier to inspect smaller branches and pull requests when I review work of my coworkers.
Also, better granularity - you know that on branch X you have feature X and you can easily manage such branches.
When working alone, I do not bother about such granularity - once I finish working on batch of things, I merge. So I create longer lived branches and once I am done, I merge it - I do not review my changes in code review, so this workflow is more suitable for me.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…