This isn't really about efficiency anyway, it's about consistency with other PL projects.

I guess, in YARD output the semantics are slightly different between 'private' and '# @api private' ... marking a method 'private' in a ruby sense puts the keyword 'private' next to it, but it lacks the declaration and clear statement of @api private: "This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.". I'd always prefer the big yellow message I guess :-).

TBH I rarely use 'private', it doesn't really stop anything and makes testing more of a hassle (ie. through send). The message behind both is clear though, although I think the YARD message is clearer :-). And if I flip the switch and want to make something private or public later - its a single line.

But I'm bike-shedding :-). YARD is something I'm passionate about, if you don't care I'll fix it later.