In D7, we used _menu_check_access to check access for a menu item. This is called often by _menu_link_translate, and is very inexpensive:
In D8, it appears that menu_item_route_access is the replacement, but it does quite a bit more:
This runs through the matching process, including applying all upcasters. I don't understand why this is necessary when we don't appear to be doing anything similar before. I understand it's a different architecture, but surely we should be able to accomplish the same task without all this work.
(both xhprof runs show a node page using standard profile)