Куча говна / Говнокод #25979 Ссылка на оригинал

0

  1. 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?
Или такие же дебилы, как я?

Запостил: MAKAKA MAKAKA, (Updated )

Комментарии (59) RSS

  • официальный тред для обсуждения профилировки и перформанса
    Ответить
  • почему виртуальным машинам (.NET, JVM) нужны SafePoints чтобы отдать стект трейсы профилировщику?
    Почему нативным не нужны?
    Ответить
    • Потому что JIT придет и перехуевертитвсе

      У жабы есть ключ, чтоб репортовать стеки без safepoint, алсо по AsyncGetStackTraces тоже так работает,но есть нюансы
      Ответить
    • Да, кстати, речь не о дебаге, а о простофилириловании.
      Ответить
        • Чесговоря, не понимаю как люди пользуются профилировщиками для изменения времени в плюсах. Ну увидите вы, что 70% времени занимает вычисление длины вектора. И хуй? Что с этим делать то? Увидите, что 40% из этого тратится (условно) на треугольники, 60% на квадраты. И хуй? Что с этим делать то?

          Я пробовал профилировщик для шарпов, но забил хуй по описанной выше причине, и использовал собственные таймеры над высокоуровневыми функциями.
          Ответить
          • В «Visual Studio» профилировщик рисует нормальное дерево вызовов. Я вижу, что 90% времени жрёт вызов foo(), из которых 90% жрёт bar(), в котором 90% занимает вычисление длины вектора — значит, надо оптимизировать работу с векторами в bar().
            Ответить
            • Но в релизной сборке картина может быть совсем другой. Как в этом случае быть?
              Ответить
              • Профилировать релизную сборку. Там, ЕМНИП, надо пару флагов выставить, вроде генерации PDB.
                Ответить
                • Он имеет ввиду, что оптимизации могут быть другие наверное.
                  Для жоба и .NET не актуально обычно, а для нативного кода оч даже. Ну тут ты прав: надо профилить релизную сборку, а PDB надо иметь всегда, иначе как ты будешь разбирать краш релизной сборки?
                  Ответить
                  • > иначе как ты будешь разбирать краш релизной сборки?
                    Принтами.

                    Ну да, дебаг-версию профилировать смысла особого нет: там бо́льшую часть ресурсов пожрал долгоносик жрут всяческие assert'ы (в том числе и те, которые внутри CRT), плюс зачастую узкие места дебаг-сборки конпелятор способен оптимизировать сам, и делать это вручную — абсолютно бесполезный труд.
                    Ответить
                    • А какими инструментами ты пользуешься?
                      Используешь ли ты какие-то свои эвенты через EWT (раз уж мы про винду говорим) или только готовые?
                      Ответить
                      • Я пишу говно в «Visual Studio» и теку. Я вообще от «Visual Studio» теку, почти как от «Notepad++». «ETW» не использовал.
                        Ответить
                        • профилируешь-то ты тоже прямо в студии, або берешь что-то типа dotTrace?

                          >«ETW»
                          То-есть весь performance toolkit тож лесом?
                          Ответить
          • Во-первых можно посмотреть сколько раз ты вызываешь это вычисление. возможно, можно сократить это время.

            во-вторых все профилировщики умеют рисовать диаграммы или дерево стектрейсов, и ты можешь увидеть, какая из твоих фунций сильнее всего его дергает.

            например тут
            http://www.brendangregg.com/FlameGraphs/cpu-mysql-filt.png

            видно, что displatch_command БОльшую часть времени делает mysql_parse


            Кроме того, функциясми тебе трудно будет узнать, сколько времени ушло на GC, например
            Ответить
        • Как ты узнаешь, в какое место надо поставить принт?
          Ответить
          • Смотрю какие высокоуровневые операции потенциально самые зажравшиеся, и делаю над ними обертку с таймером.
            Ответить
            • А если у тебя в проекте миллион строк кода, и над ним работает 200 программистов?
              А если тормозит только конкретно у одного заказчика или толькона продакшене?
              Ответить
              • Я и не говорю что это нормально, как я делаю
                Ответить
                • родила дала вам perf, ebpf, instruments/dtrace, xperf, dottrace, yourkit, jprofile, а офицеры хотят жрать говно
                  Ответить
                  • ebpf - ебаный pf? Пердоговно какое-то.
                    Ответить
                    • ebpf имеет такое же отношение к pf, какое Linux имеет к Линекс
                      Ответить
  • > Или такие же дебилы, как я?
    Да. Ты разве не знал, что программы становятся в два раза медлеенннеее с каждым годом?
    Ответить
    • Потому что их постоянно переписывают на очередной электрон
      Ответить
        • И будешь тогда писать на расте, как ржавый
          Ответить
          • Кстати, а «Clay» всё? В «Википедии» про него даже статьи нет, на сайте последняя новость в 2012-м году, в «Гитхабе» последний коммит в 2013-м (если не считать коммит в README).
            Ответить
            • погуглил
              Clay (Clowns Laughing At You), a hacker group in Who Am I
              Who Am I (German: Who Am I – Kein System ist sicher; English: "Who Am I: No System Is Safe") is a 2014 German techno-thriller film directed by Baran bo Odar.

              Сразу нажористая клюква

              Программа-ключ к месту в даркнете, где проходит связь Бенжамина и MRX сама является трояном, позволившим деанонимизировать Бенджамина. Пауля, Макса, Штефана и Наю убивает русская мафия
              Ответить
              • Покажу, что я имел в виду:
                http://claylabs.com/clay
                https://github.com/jckarter/clay

                В своё время его рекламировали на «Говнокоде» как альтернативу крестам и сишке. На местном жаргоне он назывался «клеем». А «Rust» в те времена называли «питушнёй». Происхождение такого жаргона может объяснить диаграмма:
                rooster    ruster
                ------- -> ------
                 петух     питух
                   |         |
                   v         v
                 roost      rust
                ------- -> -------
                петушня    питушня
                Ответить
                • Абсолютно все попытки выгнать сишку потерпели крах. Смиритесь.

                  Пока боролись с сишкой, распостранился рак вроде JS. Живите теперь с этим
                  Ответить
                  • На ржавчине пишут новые версии «Фуррифокса». Но они, к сожалению, не запускаются на «XP».
                    Ответить
                    • Зачем нужен фурифокс? Чтобы висеть и тормозить?
                      Ответить
                      • Вообще давайте перечислять всё, что тормозит:
                        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».

                        Дополняйте.
                        Ответить
                        • 11. Торренты на «Андроиде». - они вылетают из-за нехватки памяти при первой возможности. Я ебал этот андроид.
                          Эклипс не тормозит, не пиздите. Ну в сравнении с pycharm.
                          Ответить
                          • По сравнению с F4 в фаре эклипс очень даже тормозит.

                            Тем более что для нормальной работы в эклипсе нужно установить 94 плагина, и тогда он тормозит по хлеще студии с решарпей
                            Ответить
                            • А с каких это пор f4 - это ide?

                              Для жавы эклипсу плагины не нужны. Ты сам-то с ним работал?
                              Ответить
                              • Угадал Сёму с первых трех буков.
                                А вы?
                                Ответить
                        • Виндуос с точки зрения лоровских фанбоев
                          Ответить
  • Удивительно, что никто не упомянул perf под прыщи.

    зы: крышесносный чел научился видеть дджавовый бектрейс вместе с нативным
    https://www.youtube.com/watch?v=D53T1Ejig1Q

    * запилил опцию, чтобы джит не трогал врейм поинтер
    * заставил джита высирать мапы
    * скормил все в perf (линуксоыый обычный профилер главный) и получил объедененный стек
    охуенный
    Ответить
    • В писи имени капитана Пауэра нет никакого стека. Именно поэтому я за "ППЦ".
      Ответить
      • причем тут хардварный стек,если речь о бектрейсах?
        Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8