[Performance] improve atom.tooltips.add
You would be surprised if you know that most of the time spent for creating the buttons, is spent in adding the tooltips to them! We might want to write a faster version of the original https://github.com/suda/tool-bar/blob/937f75719a1002af5b207c073b6e45dd82617f44/lib/items/tool-bar-button-view.js#L121
https://github.com/atom/atom/blob/e4b9c1e0815c5c07514a0649e7ebb9b5226a2931/src/tooltip-manager.js#L113-L181
For 30 buttons, this becomes ~6ms.
Details

Which is almost the same as the whole time spent on the buttons:
Details

I am going to port the function to our package and see if I can write a faster version.
Further investigation shows that the time is spent here, to add keyBindingCommand, which is because we set keyBindingCommand even when the user gives it null
https://github.com/atom/atom/blob/e4b9c1e0815c5c07514a0649e7ebb9b5226a2931/src/tooltip-manager.js#L126-L139
const { keyBindingCommand, keyBindingTarget } = options;
if (keyBindingCommand != null) {
const bindings = atom.tooltips.keymapManager.findKeyBindings({
command: keyBindingCommand,
target: keyBindingTarget
});
const keystroke = getKeystroke(bindings);
if (options.title != null && keystroke != null) {
options.title += ` ${getKeystroke(bindings)}`;
} else if (keystroke != null) {
options.title = getKeystroke(bindings);
}
}
We don't need to use keyBindingCommand, because we already add a callback through callback option, and tooltip callback is redundant.