3. Ах да, оптимизации
Ладно, у нас есть ограниченный набор оных. Спасибо, что вообще хоть что-то оптимизируют. ДА ХУЕВО ОПТИМИЗИРУЮТ, БЛЯТЬ!
Нет loop unrolling. Это одна из самых примитивных оптимизаций. Что мы видим? Люди ручками циклы раскручивают. И кому вы от этого, собственно, сделали лучше, скажите пожалуйста?
Хорошо, хотя бы инлайнят. А знаете, как инлайнят? У меня вот был наглядный пример из самого сердца хттп ядра индиги. Оно заинлайнило вообще все конструкторы, геттеры и сеттеры. А знаете, что оно НЕ заинлайнило? Единственную, сука, горячую функцию. Единственная функция, которая в цикле вызывается - именно она и не заинлайнилась по итогу. Смешно? Оборжаться можно.
А знаете, почему так? Потому что в инлайнер заложили очень интересную штуку. Они считают "вес" функции, исходя из нихуя не очевидных эвристик, которые еще и из минорной версии в версию меняются. Все настолько хуево, что только относительно свежие версии научились инлайнить свитч-кейс. Свитч кейс, блять. Нет, я понимаю, что некоторые функции с деферами довольно нелегко было бы заинлайнить, и там пришлось бы изъебаться ради этого. Но у меня меньшинство таких функций. Я хочу инлайнить то, что я скажу, потому что сам компилятор слишком тупорылый, у него "скорость компиляции". А про лимит глубины в анализаторе вы слышали, кстати? Если лимит достигнут, все не-проанализированные переменные просто на хип побегут. Смешно? Чего не смеетесь? Это голанг!
Ладно, может, благодаря таким вещам код более очевидным станет? Да вот...
Post #205
103