- 1
"Performance is easy. All you need to know is everything" (c) S. Kuksenko (@kuksenk0)
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+1
"Performance is easy. All you need to know is everything" (c) S. Kuksenko (@kuksenk0)
Умеете профилировать программы?
Знаете, что такое flame diagram? Умеете посмотреть стектрейс от входа в тред до какого-нить спинлока в ядре? Смотрите асм своего компилятора или джита? Знаете, какая инструкция сколько занимает?
Умеете по vmstat/iostat или xperf/perf counters увидать проблему и соотнести ее с программой? Используете dtrace голый или с instruments? yourkit? vTune? valgrind? bpf?
Или такие же дебилы, как я?
У жабы есть ключ, чтоб репортовать стеки без safepoint, алсо по AsyncGetStackTraces тоже так работает,но есть нюансы
Для жоба и .NET не актуально обычно, а для нативного кода оч даже. Ну тут ты прав: надо профилить релизную сборку, а PDB надо иметь всегда, иначе как ты будешь разбирать краш релизной сборки?
Принтами.
Ну да, дебаг-версию профилировать смысла особого нет: там бо́льшую часть ресурсов пожрал долгоносик жрут всяческие assert'ы (в том числе и те, которые внутри CRT), плюс зачастую узкие места дебаг-сборки конпелятор способен оптимизировать сам, и делать это вручную — абсолютно бесполезный труд.
Используешь ли ты какие-то свои эвенты через EWT (раз уж мы про винду говорим) или только готовые?
>«ETW»
То-есть весь performance toolkit тож лесом?
https://docs.microsoft.com/ru-ru/visualstudio/profiling/media/diag-tools-cpu-usage-tab.png?view=vs-2019
?
https://www.ifourtechnolab.com/pics/performance-profiling-in-visual-studio-5.png
?
А ETW это вообще цыцадминский инструмент.
На бейсике пишешь?
во-вторых все профилировщики умеют рисовать диаграммы или дерево стектрейсов, и ты можешь увидеть, какая из твоих фунций сильнее всего его дергает.
например тут
http://www.brendangregg.com/FlameGraphs/cpu-mysql-filt.png
видно, что displatch_command БОльшую часть времени делает mysql_parse
Кроме того, функциясми тебе трудно будет узнать, сколько времени ушло на GC, например
А если тормозит только конкретно у одного заказчика или толькона продакшене?
Да. Ты разве не знал, что программы становятся в два раза медлеенннеее с каждым годом?
http://claylabs.com/clay
https://github.com/jckarter/clay
В своё время его рекламировали на «Говнокоде» как альтернативу крестам и сишке. На местном жаргоне он назывался «клеем». А «Rust» в те времена называли «питушнёй». Происхождение такого жаргона может объяснить диаграмма:
1. «Фуррифокс».
2. «Java».
3. Двойные кавычки в «PHP».
4. Джойны в «MySQL».
5. «Pycharm».
6. «Windows 95» с точки зрения пользователя «Windows 3.1».
7. «Windows XP» с точки зрения пользователя «Windows 2000».
8. «Windows Vista» с точки зрения пользователя «Windows XP».
9. «Windows 10» с точки зрения пользователя «Windows 7».
10. «Skype».
11. Торренты на «Андроиде».
12. «Битрикс».
13. «Ютуб».
14. «VNC».
15. «Bounds checking» с точки зрения сишника.
16. «STL».
17. «Internet Explorer» (чуть не забыл про него, это слишком очевидно).
18. «Javascript».
19. «Eclipse».
20. Фреймворки.
21. «Apache».
22. «Flash».
23. Вычисления с нецелыми числами.
24. «Visual Studio».
Дополняйте.
https://ok.ru/video/5723523744
https://i.etsystatic.com/5388888/d/il/136062/710998994/il_340x270.710998994_p5rx.jpg
P.S. Впервые при регистрации «повтор пароля» был полезен.
зы: крышесносный чел научился видеть дджавовый бектрейс вместе с нативным
https://www.youtube.com/watch?v=D53T1Ejig1Q
* запилил опцию, чтобы джит не трогал врейм поинтер
* заставил джита высирать мапы
* скормил все в perf (линуксоыый обычный профилер главный) и получил объедененный стек
охуенный