Я прошу прощения за такой заголовок, потому что современное ПО может быть медленным по множеству разных причин. Слепое использование одного объяснения без малейшего расследования — это программный аналог карго-культа. В этом посте рассматривается один пример того, почему современное ПО может быть мучительно медленным.


Я всего лишь хотел записать сорокасекундную озвучку простенького видео, поэтому запустил стандартное приложение Запись голоса (Voice Recorder) операционной системы Windows и нажал на кнопку записи. Казалось, что ничего не произошло.

Позже я проверил и оказалось, что программа выполняет запись. Я немного поэкспериментировал и выяснил, что в первый раз, когда я начинал запись после запуска Записи голоса, её реакции иногда предшествовала долгая задержка. Двадцатисекундная задержка при записи сорокасекундного клипа — довольно низкий КПД. Это расстроило меня настолько, что я захотел разобраться, почему так получается, и запустил трассировку ETW.

Современное ПО любит использовать дополнительные процессы, поэтому меня не удивило то, что самым нагруженным процессом был не SoundRec.exe, а «RuntimeBroker.exe <Microsoft.WindowsSoundRecorder>». Взглянув на его использование процессора, я заметил, что нагрузка повышается, как только я запускаю Запись голоса, даже до того, как я нажму на кнопку записи.

RuntimeBroker сильно нагружал процессор и тратил бОльшую часть своего времени в одном потоке, который активно выполнял запросы результатов просмотра какой-то папки:


Следующим я посмотрел на график файлового ввода-вывода, чтобы понять, что за папку он сканирует. Результаты оказались немного разрозненными (возможно, иногда сканирование завершалось слишком рано?), но выяснилось, что RuntimeBroker сканировал (в том же потоке) часть моей папки с документами или её целиком.


Тем временем, ещё один поток RuntimeBroker тратил немного времени в propsys.dll!TryGetFileTypeAssocFromStateRepository.

Я предположил, что цель всего этого заключалась в том, чтобы найти все аудиофайлы в моей папке документов, чтобы заполнить список предыдущих записей. И когда я начал следить за этим, то выяснил, что при запуске Записи голоса программа после существенной паузы заполняет список записей. Если я нажимал кнопку записи после заполнения списка, запись начиналась мгновенно.

<сарказм>Очевидно, в этом случае ошибку совершил пользователь. Если бы я терпеливо подождал, пока мой медленный компьютер будет готов, то при начале записи программа была бы быстрой и отзывчивой.</сарказм>

Безумие этой задержки из-за сканирования папки с документами в том, что Запись голоса, похоже, игнорирует все аудиофайлы, не находящиеся в папке Аудиозаписи. Всё это сканирование происходит впустую?

Жалобы и вопросы


По поводу всего этого у меня есть некоторые соображения…

  1. Команда dir /s может отсканировать мою папку с документами менее чем за две секунды. Почему у RuntimeBroker сканирование занимает в 5-10 раз больше времени? В этой папке у меня всего около 44 тысяч документов, что за фильтрация используется, которая добавляет на каждый файл лишние полмиллиона тактов?
  2. Зачем RuntimeBroker сканирует всю папку с документами, если Запись голоса игнорирует аудиофайлы, не находящиеся в подпапке «Аудиозаписи»? Это проблема WinRT или Записи голоса?
  3. Что происходит у пользователей, не имеющих SSD и 32 ГБ ОЗУ? В моём случае структура папки «Документы» целиком кэширована в память, поэтому для сканирования не требуется активность диска, но некоторым пользователям повезло меньше. Если у этих пользователей больше файлов и они хранятся на жёстком диске, то их остаётся только пожалеть.
  4. При выполнении операции, не позволяющей пользователю работать с приложением, честнее использовать шкалу прогресса или курсор ожидания. UI Записи голоса всегда реагировал на взаимодействия, но на самом деле это было ложью — кнопка записи должна быть отключена, пока приложение не готово.
  5. Почему сканирование папки с документами иногда выполняется только для части папки? У RuntimeBroker есть какое-то кэширование?

Я недостаточно знаю о WinRT и RuntimeBroker, чтобы осознанно говорить о причинах проблемы, но уверенно скажу, что если приложение-диктофон не способно мгновенно записывать голос на современном оборудовании, то в архитектуре определённо имеются изъяны.

Всё тестирование выполнялось на Windows 10, 21H2. В Windows 11 приложение Запись голоса заменено на Windows Sound Recorder, код которого полностью переписан. Похоже, в переписанной версии этого бага нет, так что ура, прогресс, но я опасаюсь за мир ПО, в котором приложения не исправляются, а переписываются.

Комментарии (245)


  1. isadora-6th
    14.10.2022 09:40
    +101

    Если установить VisualStudio то в простое (когда пользователь не трогал мышь 5-10 минут). Виндоуз запустит перекеширование C# приложений (которых у меня нет, я ставил для cl.exe), и будет это делать бесконечно... Просто так. Гудируя куллерами, т.к. проц игрового гроба делает 45W тепла эффективно шумя.

    Задачу можно посмотреть в планировщике taskschd.msc. Зачем? Чтобы что? Почему?

    Также из приколов, все powerplan винды не дают ядрам парковаться в максимальное энергосбережение при малой загруженности т.к. в настойках электропитания стандартно стоит 5% минимальное состояние процессора. Ставишь 0, в моём случае процессор вместо 5W начинает кушать меньше 1W.

    MS вообще веселые, вот есть Word 2021, если открыть в нём формулы, то ворд повиснет на 10-15 секунд (боже оно к счастью в другом потоке грузит) просто чтобы подгрузить превью. Перемотка вверх вниз документа в ворде мало того, что меньше 30FPS дает на intel UHD 630, так вгружает её в потолок. Зачем? 630 графика это достаточно сильно, это ~30 кадров в 1980 разрешении в играх. Ворд это блокнот со свистоперделками.

    AutoCAD... Я не знал, что 1050Ti это базовый уровень графики, ведь 60 кадров в думе этернал... на 2к. Пролаг на 1.5 секунды после каждой новой точки при рисовании линий, если не поставить карточку как базовый режим с угловатыми кругами. И это в пустом (!) проекте, без ничего... Что оно там столько времени делает?

    Visual Studio... как-то я захотел попользоваться приличный дебаггером после VSCode, т.к. занимался пердолингом с байтами в C++. Открыл вижлу, сделал хелловорлд проект... И был неприятно удивлен, что лаг на ввод СИМВОЛА ~0.3-0.7 секунды. Я на телефоне быстрей печатаю. Видимо i7-8750H и 16гб ddr4, это мало для редактирования текста. Компуктер слабоват. А говорят электрон тормозной)))

    А мы пользователи никогда с этим ничего не сделаем)


    1. MAXH0
      14.10.2022 09:58
      +23

      >> А мы пользователи никогда с этим ничего не сделаем)

      Мы, пользователи, выберем менее тормозящие программы и OS. Хотя огромная проблема - пресловутый qwerty- эффект. Всем нужна такая же программа как у коллеги для совместимости. Соответственно, возникает ползучая монополизация. Конкуренция гибнет. А монстры-монополисты перестают развиваться.

      Именно поэтому я полагаю полезным искусственное навязывание конкуренции. Когда пользуешься не самым распространенным при любом удобном случае, когда есть альтернатива.


      1. Self_Perfection
        14.10.2022 17:04
        +3

        Я согласен, что если бы пользователи чаще руководствовались отзывчивостью и производительностью софта при выборе инструмента для решения своих задач, это бы очень помогло снизить проблему bloatware.

        Но теперь хорошо бы придумать как прийти к такому состоянию. Сейчас руководствоваться такими критериями крайне сложно. Как пример: попробуйте выбрать bittorrent клиент или просмотрщик фотографий опираясь на их производительность и не проводя собственных бенчмарков. Хоть какие-то сравнения производительности просто невозможно найти! А многие пользователи просто даже и не в курсе, что программы могут кардинально отличаться по этим параметрам.

        Ну и что мы с этим можем сделать? Хотя бы в своей небольшой дельта окрестности?


        1. MAXH0
          14.10.2022 19:55
          +2

          Знаете что я отвечу? Те, кто не смотря на звание олдфага, предпочитают набирать в Vim или даже Emacs, руководствуются именно отзывчивостью и гибкостью. Без всяких бенчмарков чувствуется разница. Я больше скажу - если разница не чувствуется и требуется бенчмарк, то разница и важна пользователю. Мне одного раза достаточно было утром не суметь включить ноут из-за обновления, чтобы переустановить OS. (Хотя, разумеется, еще и потому, что на стационарном у меня давно другая OS).
          А просмотрщик фотографий я буду выбирать по таким параметрам, что отзывчивость будет, возможно, и не в первой десятке. И это норма.


          1. 0xd34df00d
            14.10.2022 20:06
            +6

            Те, кто не смотря на звание олдфага, предпочитают набирать в Vim или даже Emacs, руководствуются именно отзывчивостью и гибкостью. Без всяких бенчмарков чувствуется разница.

            А потом оказывается, что vim существует не сам по себе, а в терминале, а терминал, умеющий нормально рендерить уникод, лигатуры и всякие undercurl (привет Konsole, пять лет уже unconfirmed), тормозит или жрёт память. Kitty прямо сейчас у меня потребляет 600 мегабайт. Куда? На что? Загадка.


            1. isden
              15.10.2022 11:37

              Kitty прямо сейчас у меня потребляет 600 мегабайт. Куда? На что? Загадка.

              К слову о макоси :)
              Аптайм 46 дней. iterm открыт все это время. Запускалось примерно до 15 вкладок одномоментно, в них делалось всякое разное. Сейчас активно 5, и схавано в данный момент 358 метров.


          1. Self_Perfection
            14.10.2022 20:52

            Ваша мысль в том, что не обязательно устанавливать несколько программ и провести их бенчмарки, чтобы выбрать какой из них пользоваться, достаточно просто установить несколько и попробовать пользоваться, верно?

            Что ж, это действительно немного снижает планку сложности выбора программ по скорости реакции. Но всё же и такой уровень вложения усилий для многих слишком велик, а значит и сокращает количество людей, кто будет это делать. Готовые сравнения производительности многим упростили бы жизнь.

            Ну и кроме того не всё заметно на глаз. Программы могут работать быстро в обычных ситуациях, но например тормозить при работе с большими документами или на затроттленом перегревом процессоре. И столкнёшься с этим в неподходящий момент. Или например отличаться по потреблению заряда ноутбука или RAM. Без внимания к числам и не увидеть.

            Наконец про выбор просмотрщика изображений. Для меня это насущная проблема: у меня за день скапливаются сотни картинок, которые я хотел бы скопом просмотреть, обращая внимание на некоторые из них, а Gwenview тормозит. И перебирать кучу софта в поисках быстрого некогда.


            1. acidemic
              14.10.2022 21:13
              +8

              IrfanView для просмотра картинок отлично подходит. Пользуюсь им с начала века.


              1. samponet
                14.10.2022 23:36
                +7

                Faststone, имхо, поудобнее, пошустрее и поменьше.


                1. steanlab
                  15.10.2022 03:09
                  +2

                  XNView дружественнее имхо


              1. paunch73
                15.10.2022 15:28
                +1

                Жаль что под linux его нету, очень мне его там не хватает :(


                1. khajiit
                  17.10.2022 01:15

                  Каджиту подошел Nomacs в качестве замены. Но по богатству функционала, конечно, он серьезно недотягивает.


            1. MAXH0
              16.10.2022 17:19

               Готовые сравнения производительности многим упростили бы жизнь.

              А вот тут прилетает еще один масдай - маркетинг-ориентированное блогерство. Отзывы блогеров как бы задуманы - человек сравнил две программы и пишет впечатление, облегчая другим выбор. Но нет! Все отзывы задавлены копирайтерами, которые по шаблону пишут отзывы на программы за денюжку малую. Соответственно шанс, что отзыв будет на что-то свободное или, хотя бы, бесплатное - минимален.


        1. belozer0
          14.10.2022 21:13

          Ещё ж и фактор операционки. Когда две лучшие программы написаны под разные системы — всё, вилы.


    1. maaGames
      14.10.2022 11:06
      +1

      Про VS это у вас какой-то глюк был. У меня как-то контекстные меню открывались по 15-20 секунд в том же хелоуворлде. Сброс всех настроек пробелму решил.


      1. isadora-6th
        14.10.2022 13:01
        +1

        Это был фреш инсталл, просто после "тормозного электрона", видеть инпутлаг уровня нажал на три буквы, напечаталась первая это уже перебор.


    1. JordanCpp
      14.10.2022 11:13
      +7

      AutoCAD... Я не знал, что 1050Ti это базовый уровень графики, ведь 60 кадров в думе этернал... на 2к. Пролаг на 1.5 секунды после каждой новой точки при рисовании линий, если не поставить карточку как базовый режим с угловатыми кругами. И это в пустом (!) проекте, без ничего... Что оно там столько времени делает?

      Что же там за говнокод, который не юзает аппаратное ускорение, а если и юзает, то отрисовка вершин так много времни занимает? Не на питоне же написан. Современные видеокарты могут выводить десятки миллионов вершин за кадр, а тут две точки тормозят. Так и хочется написать ответ.

      • Что там с современным программным обеспечение?

      • Всё в говне сэр!


      1. TheTryProgrammerName
        14.10.2022 11:46
        +1

        Это же старое ПО, оно небось как 3Ds Max легаси с 90-х тянет, потому что переписывать долго, дорого и выхлоп в плане продаж с этого нулевой.


        1. JordanCpp
          14.10.2022 11:51
          +5

          Согласен и вот подтверждение.


          1. d2d8
            15.10.2022 15:18
            +1

            На вашем скрине в новости от 2012 года квартальная выручка составила 592млн, а в 2022 - 346млн. За 10 лет стало хуже исходя из неполных заголовков.


      1. grumbler66rus
        14.10.2022 17:17
        -1

        "Не на питоне же написан." - Верно, не на Python. Он на C#.


        1. doctorw
          14.10.2022 19:14
          +2

          В чём же тогда проблема?


          1. apxi
            17.10.2022 05:38

            Наверное в С#


      1. victoriously
        14.10.2022 18:49

        Что же там за говнокод, который не юзает аппаратное ускорение, а если и юзает, то отрисовка вершин так много времни занимает?

        А всё просто - аппаратное ускорение там выключено по умолчанию. И какая бы видеокарта у вас не была, пока вы не активируете галочку в настройках, у вас всё будет рендерится на процессоре.


        1. releyshic
          15.10.2022 03:03
          +1

          " аппаратное ускорение там выключено по умолчанию " для чего так сделано?


          1. Samedi_Da_Kapa
            15.10.2022 09:30

            Предположу что это легаси с тех времен, когда эта фича была только добавлена и не все компы умели в аппаратное ускорение. Но я могу ошибаться.


            1. iig
              15.10.2022 11:23

              Но аппаратное ускорение это же, блин, критически важная штука, особенно в программе, которая как то связана с графикой. Если есть возможность, оно должно быть включено по дефолту.


              1. saboteur_kiev
                16.10.2022 01:57
                +2

                Почему вообще отображение обычного МЕНЮ требует аппаратного ускорения*?


                1. iig
                  16.10.2022 22:15

                  Потому что там выше какой-то автокад обсуждается, который тормозит при рисовании линий.


    1. Jian
      14.10.2022 11:43

      image


      1. thims
        16.10.2022 19:36

        О, 2022 год таки настал, перестали Гейтса всюду пихать )


    1. saege5b
      14.10.2022 12:30
      +1

      В Автогаде - файл как виртуальная файловая система, и при установке точки, оно заново всю базу данных проходит, иногда и не по разу.

      Фикс этого чЮда я читал раз пять.


    1. me21
      14.10.2022 13:17

      А у меня на прошлом компьютере Nvidia geforce experience весь жёсткий диск сканировала в поиске установленных игр. Это в дополнение к службе поиска Windows. Хорошо, в настройках это отключается.


      1. mayorovp
        14.10.2022 17:50

        Да ладно ещё сканирование, эта сволочь играм настройки графики меняет. Точнее, в моём случае, зачем-то скручивает до минимальных (хорошего же, блин, мнения Nvidia о своих видеокартах!).


        1. firs058
          14.10.2022 18:25

          А зачем geforce experience вообще ставить? Для записи видео? Для OBS оно не нужно.


          1. 0xd34df00d
            14.10.2022 18:42
            +1

            У меня obs не завелся, а этот вот жефорс експириенс просто работает (до тех пор, пока не ломается, ну да ладно).


          1. mayorovp
            14.10.2022 21:52
            +3

            Оно само ставится вместе с дровами, если не уследить.


      1. Gaikotsu
        14.10.2022 20:48

        Притом сканирует очень тупым образом - добавляя после первого сканирования в список "проверять эти папки потом периодически" все папки в названиях которых находит ключевые слова типа "game", "steam", "origin" и т.п.


    1. PKav
      14.10.2022 15:24
      +2

      Тут хоть речь о стороннем софте. А ведь совсем недавно в Windows была (или ещё есть?) служба Prefetch/Superfetch, которая загружала часто используемые программы в свободную память. В результате жесткий диск использовался постоянно, время загрузки системы и всех программ увеличивалось в несколько раз. И всё грузилось тем дольше, чем дольше была установлена система. Когда я кому-то отключал Superfetch они не узнавали свой компьютер, настолько разительно возрастала производительность.


      1. JordanCpp
        14.10.2022 15:27

        Это не та штука которая кеширует данные в ОЗУ? Когда повторно запускаешь программу обращения к диску отсутствует. Помню, что такой функционал был в Windows 7. Не могу вспомнить, чтобы я когда либо наблюдал Prefetch/Superfetch в диспетчере задач.


        1. PKav
          14.10.2022 15:37
          +2

          Хуже. Она ведет статистику использования программ и заранее загружает их в память сразу после запуска системы. Хотели как лучше, а получилось как всегда. И это служба, она работает под именем svchost.exe


          1. P00WERFULL
            16.10.2022 19:36

            стоит системный NVMe SSD. Superfetch в Виндовс 11 успевает забить кэшем все мои 32 гига озу пока я проводу пальцем по датчику отпечатков после загрузки системы. файла подкачки нет, быстрый запуск отключен.


    1. vvviperrr
      14.10.2022 22:15

      Ты чёт делаешь не так. Мне вон в соседней теме говорят, что мой древний 4790к ещё вполне себе для кодинга.


    1. Kneqj
      15.10.2022 09:41
      -3

      Игравая мусорка 5 от слоне тоже вечно багами страдает:
      https://3dnews.ru/1025941/

      Так что ничего удивительного.


  1. Yuris1C
    14.10.2022 09:42
    -23

    Я немного поэкспериментировал и выяснил, что в первый раз, когда я начинал запись после запуска Записи голоса, её реакции иногда предшествовала долгая задержка. Двадцатисекундная задержка при записи сорокасекундного клипа — довольно низкий КПД. Это расстроило меня настолько, что я захотел разобраться, почему так получается, и запустил трассировку ETW.

    Может быть, для начала, нужно антивирус запустить?


    1. isadora-6th
      14.10.2022 10:10
      +14

      Так он в Win встроенный, получше всяких Avast Free будет.

      Да и масштаб проблемы совсем уже не вирусный.


      1. vilgeforce
        14.10.2022 10:15

        Не получше. Качество детекта у MS всегда было "не очень"


      1. Yuris1C
        14.10.2022 10:41
        -5

         масштаб проблемы совсем уже не вирусный.

        Скорее всего, там проблема не в приложении, если 20 секунд задержки, а в засранности компа.


        1. Xeldos
          14.10.2022 12:07
          +35

          Так автор уже смирился, что виноват пользователь. Если бы он писал олос как нормальный человек, на i9, на пустом терабайтном PCIE 5 SSD, с 64 памяти и свежеустановленной ОС, никаких проблем бы не было..

          Что вообще за понятие такое - "засранный комп"? Комп - это мой рабочий кабинет. Моя мастерская. И да, у меня там МНОГО всего, иначе зачем мне терабайчтные PCIE5 SSD и 64 Гб памяти? SoundRec запускать (который работал в Win3.1 в окружении слабее на три порядка)?


        1. isadora-6th
          14.10.2022 12:49
          +6

          У автора поста 32Гб ОЗУ и SSD, 20 секунд зависаний даже броди там майнеры — не будет в контексте реакции на кнопку записи голоса 20 секунд. Не может. Ведь у меня даже при билде крестов во все потоки ядер и неироничных 100% cpu, кнопочки юай отрабатывают быстро.

          Это не cpu bound задача, это каллбек, она не может тормозить сама по себе. Ну не получится его засрать.

          Тут вопрос в том, зачем оно опрашивает все документы, если использует одну папку и почему эта операция блокер новой записи


        1. CrashLogger
          14.10.2022 12:56
          +16

          Еще со времен Windows 95 не храню ничего в Моих документах и на Рабочем столе. И вообще под данные держу отдельный диск.


          1. qyix7z
            14.10.2022 14:40

            И вообще под данные держу отдельный диск.
            Аналогично, но есть софт, который кроме Моих документов ничего не хочет признавать, поэтому переношу весь профиль пользователя с системного на отдельный диск.


            1. JordanCpp
              14.10.2022 14:45

              Есть софт который привязан к реестру.


              1. qyix7z
                14.10.2022 15:53

                Да, но не понял к чему Вы.


                1. JordanCpp
                  14.10.2022 15:56

                  Я об ограничениях, программу нельзя просто перенести на другой пк, на флешку, в другой каталог. Я об этом.


                  1. qyix7z
                    15.10.2022 06:25

                    Я про личные данные, а не про программы. Про профиль, который обычно в C:\Users\ лежит.


            1. osmanpasha
              15.10.2022 08:15

              "Мои документы" можно перенести в другое место в их "Свойствах", у меня 99% программ с этим отлично работают. Правда, много программ пишут гигабайты в %APPDATA%, который остается на системном диске.


              1. qyix7z
                15.10.2022 12:22

                пишут гигабайты в %APPDATA%, который остается на системном диске.
                И поэтому в том числе переношу весь профиль, а не отдельные папки. При этом работает 100% (мне сбои не попадались) программ.


          1. anka007
            14.10.2022 15:16

            Ну так на отдельном диске папка для моих документов, это ж легко переносится. А встроеные пути по умолчанию в целом достаточно удобная вещь. На винде даже поудобнее фильтруется что где хранить физически, чем под линуксом: последний имеет совсем прозрачную организацию дискового пространства и мест хранения ПО.


      1. nin-jin
        14.10.2022 10:51
        +3

        А чем он лучше? То и дело пытается кряк заблокировать.


  1. AlexZaharow
    14.10.2022 09:44
    +2

    Если бы такие мелкие сервисные утилиты отдали на OpenSource, то такую мелочь давно бы поправили. Так-то есть другие приличные программы записи и обработки звука/видео либо из OpenSource, либо бесплатные.

    За пример использования профилировщика ETW спасибо, надо будет глянуть.


    1. Fox_exe
      14.10.2022 10:37
      +21

      Все эти штатные утилиты были в прошлых версиях винды. И работали там моментально, т.к. написано было на С++ и без всех этих свистоперделок и рюшечек в интерфейсе.

      • Из-за адской тормознутости всех новых "Метро-приложений" пришлось на Win 10 ставить кучу твиков, возращающих старый "Просмотр изображений", калькулятор, запись звука, и прочее.
        Чёрт! Да даже paint.net, написанный на томже самом C#, что и встроенный, запускается мнгновенно, работает без тормозов и обладат в разы большим функционалом, чем штатный недо-paint!


      1. Sixshaman
        14.10.2022 11:40
        +4

        paint.net ... запускается мнгновенно

        Нет. У меня запуск занимает 6-7 секунд (MS Paint запускается мгновенно). Это, кстати, основная причина, по которой я пользуюсь MS Paint намного чаще.


        1. nin-jin
          14.10.2022 12:21
          -5

          Для современного пользователя 6-7 секунд - это уже мгновенно. Хорошо хоть мода на неубираемые сплеш скрины на время загрузки приложения прошла. А то помню заказчики прям требовали их "шобы как у взрослых".


        1. Fox_exe
          14.10.2022 13:19
          +2

          У меня NVME.
          И когда я говорю "Моментально" - это значит, что в пределах 1-2 секунд.

          А вот когда я говорю "Медленно" - это реально медленно, заметно дольше 5 секунд (До 10 в случае с Paint 3D).
          И это на NVME Samsung Evo 980 (+i5 10600KF)!
          А теперь представьте, на сколько медленные штатные приложения, если система стоит на обычном HDD...

          Про старый ноут с полу-мёртвым HDD на 5400 об/мин вообще молчу...


      1. Leggera
        14.10.2022 14:57

        старый "Просмотр изображений"

        "Фотографии" хороши тем, что умеют RAW'ы кушать из коробки. Для меня было неприятным открытием, что старый "Просмотр изображений" так не умеет. На этом мой опыт LTSB/LTSC винды закончился.


        1. Darkhon
          14.10.2022 17:21

          Ну кстати, раньше они этого из коробки тоже не умели. По крайней мере для Win10 поддержка RAW была как дополнение в MS Store, можно было поставить вручную, если знать о его существовании. Это сейчас в Win11 оно автоматом стоит.


      1. vkni
        14.10.2022 18:43
        +1

        Чёрт! Да даже paint.net, написанный на томже самом C#, что и
        встроенный, запускается мнгновенно, работает без тормозов и обладат в
        разы большим функционалом, чем штатный недо-paint!

        Так для себя же пишется.


    1. PrinceKorwin
      14.10.2022 10:59
      -11

      Если бы такие мелкие сервисные утилиты отдали на OpenSource

      То туда сразу же бы понапихали бекдоров.


      1. saidelman
        14.10.2022 11:12
        +3

        вы так говорите, будто бэкдоры бывают только в открытом коде.


      1. 13werwolf13
        14.10.2022 11:20
        +21

        вообще бэкдоры чаще встречаются в проприетарщине чем в опенсорсе


    1. agranom555
      14.10.2022 13:33
      +1

      Ну калькулятор уже на github лежит, можно править


      1. Mike-M
        15.10.2022 11:34

        Ссылка на проект: github.com/microsoft/calculator


  1. JordanCpp
    14.10.2022 09:50
    +4

    Пустая трата циклов процессора. Лишние и не кому не нужные фоновые задачи. Сейчас это уже норма :(


    1. andry67
      14.10.2022 12:21
      +3

      С помощью "батника" от Westlife винда худеет на полсотни процессов.


      1. php7
        14.10.2022 17:06

        А есть какой-нибудь Tweaker, на подобие XP Tweaker, PowerToys XP?


        1. Darkhon
          14.10.2022 17:26
          +3

          Есть, и далеко не один. Одна проблема — можно что-нибудь непредсказуемо сломать, и потом долго разбираться, почему система ведёт себя странно.


  1. Anvano
    14.10.2022 10:42
    +11

    До тех пор, пока разработчики будут считать, что именно их уникальная программа должна в обязательном порядке иметь сервис (а лучше несколько), который постоянно висит в памяти, жрет процессорное время и ресурсы машины, и, естественно, устанавливается автоматически без ведома пользователя - ничего не изменится.

    Уровень bloatware в современном ПО просто зашкаливает, покупать ноутбук с OEM операционкой от вендора - это гарантированно поиметь +10-20 перманентно работающих сервисов, делающих непонятно что и постоянно общающихся с сетью. Этакие официальные вирусы, на которые не реагируют антивирусы.


    1. eyudkin
      14.10.2022 12:46
      +3

      Позвольте придраться к терминологии. Вирусы - это программы, распространяющиеся путем заражения другого ПО. Неправильно называть ими всё подряд.


      1. qyix7z
        14.10.2022 14:23
        +1

        Придираться, так по полной :)

        В обиходе «вирусами» называют всё вредоносное ПО, хотя на самом деле это лишь один его вид.


    1. Moraiatw
      15.10.2022 07:47

      Яндекс браузер создает сервис + 6 (!) точек автозапуска: 1 в реестре и 5 в планировщике заданий. Видимо, чтоб наверняка.


      1. Xeldos
        15.10.2022 21:02
        +1

        Лучшие практики со времён Яндекс Панели!


  1. agmt
    14.10.2022 10:47
    +2

    Стоит добавить, что в open-source похожие проблемы. Обнаружил, что после запуска диск отвечает очень плохо минут 5-10. Виновник - mlocate, зачем-то кеширующий список файлов каждый день (DE: Xfce 4.16). Благо, не сильно много зависимостей за собой утянул при удалении.


    1. Akr0n
      14.10.2022 10:55

      LibreOffice тоже с каждой версией все тормознее и тормознее.


      1. JordanCpp
        14.10.2022 10:59
        +1

        Не только LibreOffice. Все DE, возможно кроме OpenBox. KDE, Gnome, упомянутый Xfce. Повышаются требования к ЦП и ОЗУ.


        1. 13werwolf13
          14.10.2022 11:17
          +1

          icewm не меняется сто лет, и легковесен

          в мире опенсорса есть выбор для любого вкуса, надо только поискать


          1. JordanCpp
            14.10.2022 11:36

            Этим меня Open Source и завлёк, правда сейчас в основном на Windows, так как удалёнка. Еще не скоро мы пересядем с иглы майков:(


            1. 13werwolf13
              14.10.2022 14:52
              +1

              кто "мы"?
              лично я от мелкомягкого софта уже наверное лет 10 как успешно отказался, что дома что на работе. у меня просто нету столько нервов чтобы с ним работать.


              1. JordanCpp
                14.10.2022 14:56
                +1

                Больше на работе, где бы я не работал, везде юзают продукцию майков. Я С# программист:)


                1. alexander222
                  14.10.2022 19:46
                  +1

                  В современном мире C# программист к windows не привязан, .net core отлично работает везде. Я сам C# программист, работаю, стыдно признаться, на маке.


                  1. JordanCpp
                    14.10.2022 20:11

                    Это я знаю. Но все зависит от воли начальства от их решения. Ещё требуется определенное время для перехода на linux. Процесс идёт, но хочется побыстрее. Мак это ПК, было бы странно, если бы на нем нельзя было программировать.


        1. vkni
          14.10.2022 18:46

          Видимо, DE — это вещи, делающиеся по-заказу. Когда что-то делается явно для себя, например i3, то оно не распухает. У меня i3 мгновенно отрабатывает на 15 летнем Core 2 Duo. Версия новая (я их регулярно пакетирую). И никакой деградации я не замечаю (возможно она есть, но вот уже сколько лет незаметна).


        1. EfogHD
          14.10.2022 18:55

          Gnome на Wayland у меня работает в недо-4К (3000х2000) с идеально плавными анимациями и моментальной отзывчивостью на 0.6 ГГц. И да, это ещё и тачскрин.

          Так что у вас либо устаревший опыт, либо готовить не умеете)


      1. Mike-M
        15.10.2022 11:43

        «в open-source похожие проблемы» — эх… видать индусы и до open source добрались…

        А еще пытаются мигрировать кодовую базу на С#, чему я и многие другие активно сопротивляются.


        1. iig
          15.10.2022 12:00
          +2

          Ха-ха :( Индусы хотя бы это делают за деньги..

            reference->image->x = (RGBABitmap**)malloc(sizeof(RGBABitmap) * 0.0);
          for(i = 0.0; i < xLabels->stringArrayLength; i = i + 1.0){
              if(xLabelPriorities->numberArray[(int)(i)] == p){

          Вот что курил автор этих строк? Что побудило его использовать double для итераций по массиву?


          1. vassabi
            15.10.2022 12:23

            хмм ... как-то видел интересный вариант кода, который выглядел как странная но некритичная ошибка начинающего программиста - и приводил к взлому (при передаче на вход определенных значений)...


            1. iig
              15.10.2022 12:30

              Ну это библиотека для рисования графиков, слишком затейливо с помощью нее что-то ломать. Скорее всего, она была написана студентом-физиком на basic, а потом её как смогли переписали на все прочие языки.


          1. Mike-M
            15.10.2022 12:55

            Да и в первой строке тоже: даже я, ни разу не программист, знаю, что вызывать malloc без проверки на null — под строгим запретом.


    1. 13werwolf13
      14.10.2022 11:18
      +2

      mlocate кэширует файлы для того чтобы при использовании поиска не сканить весь диск а быстренько дать ответ из бд, и что-то я не припомню дистрибутива в котором mlocate шёл бы из коробке так что скорее всего вы его доставили сами


      1. agmt
        14.10.2022 11:47
        +1

        В Kubuntu идёт из коробки с добавлением себя в `/etc/cron.daily`:
        cdimage.ubuntu.com/kubuntu/focal/daily-live/current/focal-desktop-amd64.manifest
        packages.ubuntu.com/focal/amd64/mlocate/filelist
        Вероятно, я что-то поставил и оно потянуло зависимость.


        1. 13werwolf13
          14.10.2022 14:51

          а в серьёзных дистрибутивах оно уже давно не в cron а через systemd таймеры...


          1. 0xd34df00d
            14.10.2022 18:32
            +1

            Gentoo — несерьезный. Ну ок.


            1. 13werwolf13
              14.10.2022 18:45
              +1

              серьёзнее некуда


              1. 0xd34df00d
                14.10.2022 18:56
                +1

                А у меня openrc и все кроны как обычно.


                1. 13werwolf13
                  14.10.2022 19:21

                  Рад за вас, ну или сочувствую, предлагаю на выбор. В общем не знаю я что вы хотите этим сказать


                  1. 0xd34df00d
                    14.10.2022 20:07
                    +1

                    Хочу выразить ноту протеста против вашего исходного тезиса.


    1. Pastoral
      14.10.2022 11:26
      +2

      Не похоже что виновник mlocate, похоже что виновник тот, кто настроил запуск updatedb каждый день и не настроил /etc/updatedb.conf.


    1. iig
      14.10.2022 11:27

      зачем-то кеширующий список файлов каждый день

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


  1. JordanCpp
    14.10.2022 11:05
    +9

    Нужно было создать pdf файл, скачал pdf24. Прописывается в автозауск, зачем? Когда закрываешь через трей, выводит бесящую надпись, вы точно хотите выйти из программы. Это было последним раздражающим фактором. Сделал дело, снес.


    1. nin-jin
      14.10.2022 12:26
      +6

      Очевидно, это нужно, чтобы пользователь думал, что оно запускается мгновенно при нажатии на иконку, а не 10 секунд. Не оптимизировать же софт, в конце-то конов.


    1. osmanpasha
      15.10.2022 08:39
      +2

      Я под такой шлак виртуальную машину держу. Поставил, попользовался, откатил на старый снапшот. Или не откатил, все равно не жалко, основную систему не засоряет.


      1. Mike-M
        15.10.2022 11:45

        Аналогично, очень удобно!


  1. JordanCpp
    14.10.2022 11:25
    +2

    Обновил десктоп на i5-11400. Прирост таки есть. Но провел следующий тест. Открыл каталог WIndows32 в Double Commander и начал быстро скролить вверх и вниз. Собственно вот

    5-6% процентов загрузки ЦПУ многовато для такой задачи. GPU в это момент грузиться на 6%. Аналогичный тест на Athlon X4 640 грузит одно ядро под 100%.

    Надо бы все таки посмотреть стек вывозов, что же там такое происходит.


    1. Revertis
      14.10.2022 15:04
      +1

      Иконки небось генерируются для каждого файла :)


    1. saboteur_kiev
      14.10.2022 15:19
      +3

      юзайте FAR ;)


      1. JordanCpp
        14.10.2022 15:33
        +3

        Решил протестить древний Windows Commander. Возможны слёзы умиления и повышение артериального давления на фоне нахлынувшей ностальгии:)


        1. JordanCpp
          14.10.2022 15:48

          Запускаю на Windows 10


          1. moviq
            15.10.2022 16:45
            +1

            Да и современный так же мало


        1. anka007
          14.10.2022 15:51
          +2

          Просто произошло развитие понятия расширения и типа файла. Сценарий использования таков, что пользователю вообще не нужно задумываться над тем, что у него есть какие-то там файлы или что-то подобное, это все особенности технической реализации. Для пользователя есть объекты "картинка", "видео", "документ". ДОступ к ним через соотвествующее приложение.

          Но реализация получилась ни то, ни се. Ни до полноценных объектов не доросли, и базовые операции прибили. Поэтому всем, кто работает с чем-то большим чем "картинка" и "документ" необходимо ставить приложения с двадцатилетней историей.


          1. redsh0927
            14.10.2022 19:47
            +3

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


        1. dunkelfalke
          14.10.2022 17:09
          +2

          Total Commander (он сейчас так называется) последней версии 10.51 кушает вообще 4.3 мегабайта и при скроллинге грузит процессор на 0.5%. Думаю оптимизация free pascal помогла, старый был ещё на дельфи написан.


        1. BiOMeX
          14.10.2022 17:35
          +6

          Виктор Котов: Насколько мне известно, Вы используете Delphi (кстати, какую версию?). Но сейчас появились новые языки программирования (C#, .Net и т.д.). Нет ли планов сменить язык и среду программирования? Какой язык Вы будете использовать в будущем?

          Кристиан Гислер: Для Total Commander я все еще пользуюсь Delphi 2.0, хотя у меня есть лицензионная Delphi 7, которую я использую для других проектов. Delphi 2.0 идеальна для меня, потому что она работает очень быстро и выдает очень компактный код. Кроме того, последние версии Delphi создают код, который несовместим с 16-разрядной Delphi. Маленький размер программы важен для меня еще и потому, что я отправляю заказы покупателям на дискетах, но в будущем я планирую перейти на компакт-диски. Также маленький размер важен для скачивания в Интернет. Вот почему ".Net" абсолютно неприемлема для shareware-программистов: пользователям придется скачивать кроме программы еще и 23 мегабайтный дистрибутив ".Net framework" для того чтобы запустить программу.


          1. iig
            14.10.2022 17:43
            +7

            2004 год, программа должна помещаться на дискету.

            2022 год, программа должна запускаться.


            1. morijndael
              14.10.2022 20:15
              +7

              Вообще то программа в 2022 должна приносить бабло, то что она запускается — побочный эффект /j


              1. nixtonixto
                15.10.2022 08:04
                +2

                Вообще-то в 2022 программа или даже новая версия ОС должна выйти раньше конкурентов, а то что оно криво работает или вообще падает вместе с компьютером — не беда, в обновлениях поправим.


          1. releyshic
            15.10.2022 03:52
            -1

            " Маленький размер программы важен для меня еще и потому, что я отправляю заказы покупателям на дискетах, но в будущем я планирую перейти на компакт-диски. Также маленький размер важен для скачивания в Интернет. Вот почему ".Net" абсолютно неприемлема для shareware-программистов: пользователям придется скачивать кроме программы еще и 23 мегабайтный дистрибутив ".Net framework" для того чтобы запустить программу " сейчас вот это вообще не актуально


            1. osmanpasha
              15.10.2022 08:46

              Ну как не актуально. Регулярно встречаются программы, которые требуют какую-то новую версию .Net Runtime, которую приходится искать на сайте микрософта, качать и ставить. Размер не важен, но вот потраченное время...

              Справедливости ради, это же верно и для нативных приложений, требующих новых версий Visual C++ Redist.


              1. Skykharkov
                15.10.2022 09:10
                +1

                Ну с .NET 6 уже можно паковать вот прямо все-все в один файл. Удобно и вроде работает. Как для Windows так и для Linux. Т.е. тащить за собой фреймворк не надо. Но размеру ну и скорости запуска примитивнейшего приложения не стоит удивляться. Оно все распаковывает в "temp" и уже оттуда все подгружает.


                1. agranom555
                  15.10.2022 11:52

                  С .NET 6 "Оно все распаковывает в "temp" неверно.


                  1. Skykharkov
                    15.10.2022 17:15

                    Single file build как раз таки и распаковывает. И запускает из распакованной папки, а не с места где лежит оригинальный executable.
                    Они для этого даже специальную функцию добавили чтобы получать имя оригинального файла, кстати, а не процесса который действительно исполняется.


                    1. agranom555
                      15.10.2022 17:38

                      Это было в 3 версии. Сейчас уже не так. Функция нужна еще, вроде да. Но папка темп уже нет

                      https://learn.microsoft.com/en-us/dotnet/core/deploying/single-file/overview?tabs=cli

                      Previously in .NET Core 3.0, when a user runs your single file app, .NET Core host first extracts all files to a directory before running the application. .NET 5 improves this experience by directly running the code without the need to extract the files from the app.


      1. SimSonic
        14.10.2022 18:55

        У меня, к слову, на вин 11 с ним беда. Там прикрутили этот модный терминал, и фар в нем иногда отрисовывается кривовато. Ещё и при запуске по иконке на панели задач уходит во вкладку терминала, и в его значок. Ещё раз кликнул -- держи ещё один новый фар. На 10 такого не было :(


        1. saboteur_kiev
          14.10.2022 23:39
          +3

          ConEmu используете? Фар без него сейчас уже не фар


          1. SimSonic
            15.10.2022 05:54

            Нет, не использую, спасибо за наводку!


  1. dendron
    14.10.2022 11:32
    +5

    Можно представить как к этому конкретному багу пришли во время разработки:

    Менеджер: ...а ещё нужно в программу для записи добавить список ранее записаных файлов, сроки - должно быть сделано вчера. Проставил время на задачу в жире - полчаса. Всё, я ушёл.

    Кодер (на минимальной ставке): "stackoverflow.com", "Ctrl-C", "Ctrl-V", "шлёп", "закрыть задачу".

    Менеджер: Работает? Всё, в продакшн, сроки горят. Кстати, зайди потом в отдел кадров...


    1. JordanCpp
      14.10.2022 11:34
      +2

      И тестер торопился домой, работает, багов нет. В прод.


      1. DikSoft
        14.10.2022 11:40
        +8

        Тестера уволили ещё до этой задачки


        1. JordanCpp
          14.10.2022 11:41
          +4

          Не хочу быть конспирологом, возможно тестера вообще не было:)


          1. Tangaroa
            14.10.2022 12:22
            +5

            сам кодер и был тестером. Компилируется? Да.. с ворнингами, но компилируется же!

            Значит, всё в порядке.


        1. apro
          14.10.2022 15:48
          +1

          Бывший сотрудник MS писал об этом: https://habr.com/ru/news/t/468585/


          1. JordanCpp
            14.10.2022 15:50
            +1

            Бабло в очередной раз победил здравый смысл.


      1. nonickname227
        14.10.2022 11:50
        +8

        Тестер проверял с тестовой папкой документы/аудиозаписи, где лежат test1.wav и test2.mp3. Тесты прошли идеально.


  1. elve
    14.10.2022 11:35

    Я прошу прощения за такой заголовок, потому что современное ПО может
    быть медленным по множеству разных причин. Слепое использование одного
    объяснения без малейшего расследования — это программный аналог карго-культа. В этом посте рассматривается один пример того, почему современное ПО может быть мучительно медленным.

    Этот пример, как и многие другие легко укладывается в определение "программисты нарукожопили". Расследование не меняет этого факта, а лишь раскрывает детали.

    Культ-карго будет, если для увеличения производительности, без изучения причин, будет использоваться один и тот же метод/блок кода.


  1. JordanCpp
    14.10.2022 11:39

    Я прошу прощения за такой заголовок, потому что современное ПО можетбыть медленным по множеству разных причин.

    Вообще не парьтесь на этот счёт. Я писал заголовки в более агрессивной манере. претензий не было. Я бы конечно заголовок переделал:) Так сказать, полностью отразив всю боль использования современного ПО.


  1. Azimut99
    14.10.2022 11:58
    +1

    Над этим модулем работали лучше индийские программисты подразделения MS ?


    1. Jian
      14.10.2022 13:05

      Индусы использовали CoPilot? image


    1. Mike-M
      15.10.2022 11:57

      Хуже того, похоже что теперь они запустили свои щупальца и в open source ????


  1. ihouser
    14.10.2022 12:03
    +11

    Так...

    1. Собираем статистику, умножаем на количество ПК

    2. Пустую трату электричества пересчитываем в эмиссию CO2

    3. Жалуемся в СпортЛото

    4. ...

    5. Profit!


  1. Tangaroa
    14.10.2022 12:20
    +3

    А что вы хотите от софта, который написан вот примерно такими профессионалами, чей код я постараюсь частично процитировать ниже?

    if (c=='a') { return 'a';} else

    if (c=='b') { return 'b'; } else

    if (c=='c') { return 'c'; } else

    ...и таких строк ещё много - для всех ASCII символов. В общем, идею вы поняли.


    1. Gaikotsu
      14.10.2022 21:07

      Пфф... а как вам такое? Я в свое время когда на это наткнулся в исходниках, в процессе правок кода - долго думал...

      	public static boolean parseBoolean(final String s)
      	{
      		switch(s.length())
      		{
      			case 1:
      			{
      				final char ch0 = s.charAt(0);
      				if(ch0 == 'y' || ch0 == 'Y' || ch0 == '1')
      					return true;
      
      				if(ch0 == 'n' || ch0 == 'N' || ch0 == '0')
      					return false;
      
      				break;
      			}
      			case 2:
      			{
      				final char ch0 = s.charAt(0);
      				final char ch1 = s.charAt(1);
      				if((ch0 == 'o' || ch0 == 'O') && (ch1 == 'n' || ch1 == 'N'))
      					return true;
      
      				if((ch0 == 'n' || ch0 == 'N') && (ch1 == 'o' || ch1 == 'O'))
      					return false;
      
      				break;
      			}
      			case 3:
      			{
      				final char ch0 = s.charAt(0);
      				final char ch1 = s.charAt(1);
      				final char ch2 = s.charAt(2);
      				if((ch0 == 'y' || ch0 == 'Y') && (ch1 == 'e' || ch1 == 'E') && (ch2 == 's' || ch2 == 'S'))
      					return true;
      
      				if((ch0 == 'o' || ch0 == 'O') && (ch1 == 'f' || ch1 == 'F') && (ch2 == 'f' || ch2 == 'F'))
      					return false;
      
      				break;
      			}
      			case 4:
      			{
      				final char ch0 = s.charAt(0);
      				final char ch1 = s.charAt(1);
      				final char ch2 = s.charAt(2);
      				final char ch3 = s.charAt(3);
      				if((ch0 == 't' || ch0 == 'T') && (ch1 == 'r' || ch1 == 'R') && (ch2 == 'u' || ch2 == 'U') && (ch3 == 'e' || ch3 == 'E'))
      					return true;
      
      				break;
      			}
      			case 5:
      				final char ch0 = s.charAt(0);
      				final char ch1 = s.charAt(1);
      				final char ch2 = s.charAt(2);
      				final char ch3 = s.charAt(3);
      				final char ch4 = s.charAt(4);
      				if((ch0 == 'f' || ch0 == 'F') && (ch1 == 'a' || ch1 == 'A') && (ch2 == 'l' || ch2 == 'L') && (ch3 == 's' || ch3 == 'S') && (ch4 == 'e' || ch4 == 'E'))
      					return false;
      
      				break;
      		}
      
      		throw new IllegalArgumentException("For input string: \"" + s + '"');
      	}
      


      1. 0xd34df00d
        14.10.2022 21:31
        +2

        Хм.


        Как бы вы проверили строку на равенство "false" без учёта регистра?


        1. cepera_ang
          14.10.2022 21:36

          is_false = stroka.to_lower() == “false” не подойдёт? :)


          1. 0xd34df00d
            14.10.2022 22:03
            +6

            Нет, конечно. Мы ж тут разленившихся программистов, не считающих байты и такты, обсуждаем, а у вас там вероятное выделение памяти, да и небось ещё в локаль пойдёте, чтобы правильно обрабатывать всякие ß и прочие смешные символы, да и ещё в зависимости от текущего языка, культуры (или как оно там в дотнете называется) и так далее.


            Настоящий Программист™ сделает что-то вроде (пишу на псведоплюсах)


            if constexpr (Endianness == BIG_ENDIAN) // или little, лень думать, но мысль понятна
            {
              if (s.length() == 5)
              {
                uint64_t buf;
                // ^ кстати, хз, надо ли инициализировать, или я уже сделал UB
                memcpy(&buf, s.data(), 5);
                // ^ s.length() вместо 5 нельзя,
                // не все компиляторы делают constant propagation настолько умно
            
                // сбрасываем 6-ой бит в каждом символе из первых пяти,
                // что в кодировке ASCII превращает маленькую букву в большую,
                // остальные выставляем в ноль,
                // чтобы не тратить такты на инициализацию buf конкретным нулём
                // и всё равно затереть мусор
               buf &= 0xDFDFDFDFDF000000;
               return buf == 0x46414c5345000000;
              }
            }
            else
             // аналогично, только для обратной endianness

            где 0x46414c5345000000 берётся как результат аналогичного копирования "FALSE":


            λ> flip showHex "" $ foldl (\acc sym -> acc * 256 + sym) 0 $ (ord <$> "FALSE") <> [0, 0, 0]
            "46414c5345000000"

            Ещё надо добавить куда-нибудь static_assert, что CHAR_BITS равно 8, а то всякое бывает.


            1. cepera_ang
              14.10.2022 22:08
              +3

              Да-да, и в итоге на такое байтоёбство уйдут все ресурсы разработки и на вычищение херни как в исходном посте уже не останется сил. А функция сравнения с false будет вызывать целый один раз, при парсинге аругментов командной строки этого калькулятора, который в 99.999% случаев запускают вообще без аргументов.


              1. 0xd34df00d
                14.10.2022 22:11
                +1

                Да-да, и в итоге на такое байтоёбство уйдут все ресурсы разработки и на вычищение херни как в исходном посте уже не останется сил.

                Более того, на добавление херни как в исходном посте уже не останется сил!


                1. cepera_ang
                  14.10.2022 22:15
                  +1

                  Не, на это всегда будут ресурсы, но мало :)


            1. inkelyad
              14.10.2022 22:25

              Эм.. А еще можно где-то так.


        1. mayorovp
          14.10.2022 22:02
          +1

          Ну, у нас это делается вот так: str.Equals("false", StringComparison.OrdinalIgnoreCase). В Java наверняка должен быть столь же простой способ...


          1. 0xd34df00d
            14.10.2022 22:03
            +1

            IgnoreCase слишком жирно.


          1. Gaikotsu
            15.10.2022 00:14

            Так вот в том то и дело что тот же стандартный метод Boolean.valueOf(String s) как раз так и проверяет, просто как

            return s.equalsIgnoreCase("true");
            

            т.е. просто и лаконично и этого бы хватило за глаза.
            К чему было городить то извращение, что я выше привел - я так и не понял.
            Метод если что использовался чисто для распарса булевых параметров из конфигурационных файлов и при этом там в качестве значений используются только true/false, но никак не 1/0, on/off и т.п.


            1. daggert
              15.10.2022 00:44

              Все что говнокоженного выше - не приведение в lowercase. Если система подразумевает модульность и заполнение конфига левыми людьми - вполне себе неплохой вариант думать про Y/N 1/0, Yes/No и т.п., сам так извращаюсь.


              1. Gaikotsu
                15.10.2022 03:42
                +1

                Ну даже с учетом таких вариантов можно было написать намного короче и логичней, например так:

                	public static boolean parseBoolean(String s)
                	{
                		if (s.equalsIgnoreCase("true") || s.equalsIgnoreCase("yes") || s.equalsIgnoreCase("on") || s.equalsIgnoreCase("y") || s.equals("1"))
                			return true;
                		else if (s.equalsIgnoreCase("false") || s.equalsIgnoreCase("no") || s.equalsIgnoreCase("off") || s.equalsIgnoreCase("n") || s.equals("0"))
                			return false;
                
                		throw new IllegalArgumentException("For input string: \"" + s + "\"");
                	}
                

                Даже если такое будет работать чуть медленнее чем тот код - в том месте где это использовалось это вобще не критично.

                Тот код, что я приводил примером ранее, если что взят из одной из веток java-эмулятора Lineage II. Ну и да там с качеством кода зачастую все достаточно печально, т.к. в процессе развития исходники зачастую проходят через множество людей, с разной степенью кривизны рук и каждый пишет так как видит "лучше".


                1. osmanpasha
                  15.10.2022 08:55
                  +1

                  Изначально же про производительность говорили, надо было хотя бы в начале функции сделать что-то вроде

                  String s_lo = s.toLowerCase();

                  и использовать обычное сравнение.


        1. iig
          14.10.2022 22:10

          strcasecmp ;)

          Но в мире java свои интересные конкурсы ;)


        1. inkelyad
          14.10.2022 22:19
          +1

          Можно вручную сделать небольшой конечный автомат, который и будет выдавать искомое. Но только вот понять такую функцию будет совершенно невозможно.

          Еще можно при помощи gperf сгенерить не менее непонятное выражение, сравнив результат которого один раз с числом тоже получим искомое.


          1. 0xd34df00d
            14.10.2022 22:27
            +1

            Мне вот неочевидно, что будет быстрее — КА (и не обязательно руками, есть же какой-нибудь ragel) или свитч по длине строки и байтоложество в стиле комментария выше. По идее, КА будет существенно хуже, потому что для строки в 5 символов это уже будет больше десятка сравнений для худшего случая совпадающих строк (и одно для лучшего случая несовпадающих сразу), а для кода как у автора — вообще инструкций будет дофига, I-кэш вымывается, ну его. Для байтоложеского случая выше — один свитч по длине строки (разворачивающийся здесь в джамп по таблице по индексу) плюс где-то одно-три сравнения в каждой ветке (по количеству возможных паттернов этой длины).


          1. Playa
            15.10.2022 12:35

            А можно взять compile-time регулярку


            1. inkelyad
              15.10.2022 13:18

              Там выше я в сарказм немного не смог. Насчет того как написать оптимально, но совершенно непонятно. На практике я бы switch c нужными строками в качестве вариантов выполнения написал и пускай компилятор/среда выполнения разбирается, как это индексирование по конечному набору коротких строк оптимизировать. Что они должны бы уметь - теория уже немало лет известна.

              Оно хотя бы понятно было бы, что вот это - это у нас true, а вот это - false.


      1. Tangaroa
        14.10.2022 22:05
        +1

        Это плохой код. Ну кто так называет переменные? ch0, ch3... Имена переменных должны быть длинными и понятными. Например, DlinnoePonyatnoeImyaPeremennoy1, DlinnoePonyatnoeImyaPeremennoy2,...


    1. v1000
      14.10.2022 22:20

      Где-то слышал байку, что это из-за того, что программистам платят на основе количества строк кода, которые они написали. Поэтому им не нужно делать быстрый и простой код - им необходимо делать как можно больше проверок, там, где можно обойтись одной.


      1. Tangaroa
        14.10.2022 22:25

        К тому же, когда столько всяких разных проверок, это делает код БЕЗОПАСНЫМ!


  1. Celestial_Parallax
    14.10.2022 12:29
    +4

    По моему, это очевидная экономия средств. У вас есть выбор - либо нанять отдел дорогих программистов на плюсах, которые сделают качественное ПО, но стоят очень дорого, либо нанять столько же индусов за копейки которые сделают это на самом модном фреймворке. И плевать, что этот фреймворк тоже основан на другом фреймворке написанном другими индусами. Главное, что при отчёте инвесторам мы отчитаемся о экономии средств.

    Так и множатся уровни виртуализации. Отсюда и скорость падает, когда каждый фреймворк собирает для себя статистику и ведёт свои кэши.


    1. PKav
      14.10.2022 15:30

      Такая экономия средств допустима для малого и, может быть, среднего бизнеса. Но когда доходы превышают расходы в несколько раз, думаю, можно уже позаботиться и о качестве продукта.


      1. Celestial_Parallax
        14.10.2022 17:14
        +2

        Как раз наоборот. Когда доходы превышают расходы в сотни раз, можно позволить себе снижение качества продукта, для дальнейшего увеличения доходов, а также увеличения маркетинга в продукте.

        При таких объёмах и фактическом доминировании на рынке, о качестве думают в последнюю очередь.


      1. vkni
        14.10.2022 18:49
        +2

        Вы неявно заметаете под ковёр то, что у нас капиталистическая экономика. А значит, главная цель любого бизнеса — это прибыль. Качество продукта в случае околомонопольного положения коррелирует с прибылью достаточно слабо.


    1. 0xd34df00d
      14.10.2022 18:39
      +1

      либо нанять отдел дорогих программистов на плюсах, которые сделают качественное ПО

      На плюсах будет относительно быстро, но с дырками.


      Выбор на самом деле сильно шире, и двумя озвученными вами опциями не ограничивается.


  1. sva89
    14.10.2022 12:34
    +18

    Но на собесе будь добр обойти дерево любым из возможных способов.


    1. ihouser
      14.10.2022 14:47
      +6

      Видимо, они обошли гуськом и их всех сразу приняли.


    1. scream_r
      14.10.2022 14:47
      -2

      Ну так наоборот же, хорошо что кто-то пытается собирать команду которая хотя бы в теории умеет кодить что-то не настолько тормозное.


      1. JordanCpp
        14.10.2022 14:57

        Могло быть ещё хуже? Куда уж хуже:)


    1. Tangaroa
      14.10.2022 22:26
      +2

      1) Находим дерево.

      2) Обходим его, дружно держась за руки.

      3) ????

      4) Профит!


  1. sergeyns
    14.10.2022 13:12

    Кстати, 40к файлов для одной папки - это очень много для винды... Торможения на 40 секунд - это еще легко отделались!


    1. saboteur_kiev
      14.10.2022 15:20
      +1

      почему для винды?
      Для любой ОС, если работать с такой папкой в GUI.
      А вот для прямого обращения - NTFS на самом деле весьма неплохая файловая система.


      1. iig
        14.10.2022 15:58

        Для любой ОС, если работать с такой папкой в GUI.

        Потомушто как поступает кодер? Есть контрол, который умеет работать со списком файлов - загрузили в него список, 2 строчки кода и фича готова. А то что список готовится не мгновенно, и что со скроллируемым списком в 40 000 элементов всё равно невозможно работать - про это думать некогда, нужно прыгать.


        1. cepera_ang
          14.10.2022 20:17

          Почему всего 40 тысяч объектов — это должно быть проблемой для современных компьютеров?


          1. DirectoriX
            14.10.2022 22:08

            Пальцем в небо: потому что некоторые алгоритмы (та же быстрая сортировка при неудачных входных данных) работают за квадратичное время?


            1. cepera_ang
              14.10.2022 22:17

              Ну да, и поэтому стоит тестировать свои поделки на сотнях тысяч и миллионах объектов, чтобы случайно не зашипить квадрат и не позориться :)


              Вероятность того, что случайно сортировка вдруг превратится в квадратичную — довольно мала, но всегда можно пошафлить за линию перед ней, если есть такие опасения.


              1. 0xd34df00d
                14.10.2022 22:20
                +1

                Вероятность того, что случайно сортировка вдруг превратится в квадратичную — довольно мала, но всегда можно пошафлить за линию перед ней, если есть такие опасения.

                Убив потенциально часто встречающиеся хорошие кейсы сортированных или почти сортированных данных (которые в адекватных библиотеках обрабатываются отдельно).


                Короче, писать код сложно.


                Впрочем, есть алгоритмы сортировки с неплохими константами и nlogn и в худшем случае, так что непонятно, зачем привязываться именно к быстрой сортировке.


          1. iig
            14.10.2022 22:18

            Если эти обьекты автоматически и неявно для программиста сортируются (или индексируются), например - это проблема для любого компьютера.


        1. saboteur_kiev
          14.10.2022 23:40

          Потомушто как поступает кодер? Есть контрол, который умеет работать со списком файлов - загрузили в него список, 2 строчки кода и фича готова.

          Чего?
          Это файловая система. Пока пользователь думал что нажать, а потом нажал сортировку, в каталоге могло появиться еще сто новых файлов. Поэтому все менеджеры и перечитывают список.
          У меня 200 тысяч файлов лет 20 назад минут 20 считывался под NT


          1. randomsimplenumber
            15.10.2022 08:59
            +4

            У файлового менеджера основная задача - список файлов показывать, даже если он длиной 200000. Правда, этот список бесполезен чуть более чем полностью - на экран он не помещается, и скроллить его невозможно. А в приложении звукозаписи, скорее всего, каждый элемент списка в потрохах ещё и метаданные парсит по индийской методике. Имхо, GUI для списка в 100 элементов и для 100 000 элементов, для начала, нужно проектировать по разному.


  1. Qvxb
    14.10.2022 13:29

    1. При выполнении операции, не позволяющей пользователю работать с приложением, честнее использовать шкалу прогресса или курсор ожидания. UI Записи голоса всегда реагировал на взаимодействия, но на самом деле это было ложью — кнопка записи должна быть отключена, пока приложение не готово.

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


    1. cepera_ang
      14.10.2022 20:19

      Проблема как раз в том, что разные потоки там и есть и в современном софте не принято отключать элементы интерфейса, а асинхронно кидать события с них в какую-нибудь очередь, где висит прошлый таск на сканирование файлов. Так что жмёшь, жмёшь на кнопки, они вроде бы нажимаются, а на самом деле ничего не происходит.


      1. Qvxb
        14.10.2022 20:50

        Проблема как раз в том, что разные потоки там и есть

        Ну вот для шкалы сканера файлов надо было бы еще 1 делать.

        Так что жмёшь, жмёшь на кнопки, они вроде бы нажимаются, а на самом деле ничего не происходит.

        Не очень хороший подход имхо, но значит менеджер одобрил.


  1. Shura_m
    14.10.2022 13:43
    +14

    А вы видели сколько занимает памяти калькулятор в windows 10 ?

    windows 95 - целая ОС - занимала меньше !

    Судя по размеру памяти, калькулятор хранит все мои вычисления с момента поступления в школу.


    1. JordanCpp
      14.10.2022 14:31

      Это вы хорошо подметили.


    1. ihouser
      14.10.2022 14:58
      +2

      Предположу -- разрабу было лень писать код, поэтому запустил windows 95 в ВМ, запустил калькулятор на фулскрин и все это добро упаковав в экзешник сдал в прод.


      1. anka007
        14.10.2022 15:28
        +4

        Ну так оно работает и считает по правилам. Вы знаете сколько там всяких правил оказывается?! И порядок действий соблюдай, и скобочки контролируй, и за переполнениями и исключениями следи! После того, как QA в **тый раз вернуло задачу пришлось так сделать.

        PS: а хорошо, что тесты подошли от прошлой версии калькулятора!


        1. Physmatik
          15.10.2022 17:18

          Мы такие калькуляторы с порядком действий и скобочками писали в 10-м классе. Дельфи выдаёт полтора мегабайта полный стэндэлон.


    1. valera5505
      14.10.2022 17:03
      +3

      Благо, калькулятор — опенсорс, так что можете исправить положение :)


  1. redsh0927
    14.10.2022 15:22
    +1

    Не только медленное, но и крайне убогое функционально и по юзабилити.
    Причина одна — нынче его пишут «нормальные люди» для «нормальных людей», а не профи для профи…


  1. gandjustas
    14.10.2022 15:43
    +1

    Ответ простой:

    Потому что эти утилиты вроде Voice Recorder писались студентами. Это не шутка и не утрирование. На презентации Windows 8 и WinRT было сказано что эти утилиты были специально написаны с нуля на WinRT, хотя не было большого смысла переписывать. И для переписывания набрали студентов (interns) чтобы показать что это очень легко.

    Так как программа записи голоса в винде очень непопулярная, весь монтаж видео и звука делается в более профессиональных программах, то улучшать её никто не собирается.


  1. stanislavskijvlad
    14.10.2022 15:46
    +1

    хоспадиии, как же на SuSE хорошо...


    1. anka007
      14.10.2022 15:57
      +1

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


      1. JordanCpp
        14.10.2022 16:02

        Лет 5 как Linux дорос до домашнего применения. Проблемы могут быть лишь в не поддерживаемом железе и вероятность найти такое железо, крайне мала:) Но я не играю в современные игры, потому не знаю насколько это проблемно. Возможностей Wine мне хватает.


        1. anka007
          14.10.2022 16:04
          +1

          На ноуте? ха-ха. Опыт настраивания на нескольких машинах нескольких дистрибутивов.


          1. JordanCpp
            14.10.2022 16:09

            У меня дома 2 ноута и 2 ПК, на всех стоит доп системой Lubuntu и даже печать работает. Чудеса.


            1. anka007
              14.10.2022 16:40
              +3

              Спящий режим - танец с бубном, желательно на "чистой" машине. Регулярно что-то при обновлении ломается. Сканер отпечатков пальцев не работает принципиально. Поддержка переферии - всегда лотерея, надо внимательно изучать.


          1. 0xd34df00d
            14.10.2022 18:41
            +1

            А как на тех же ноутах чувствует себя упомянутый вами как идеальный вариант эппл?


            1. anka007
              14.10.2022 19:09
              +1

              Эппл живет на своих эппловских ноутах. Благодаря минимальному разнообразию железа живет хорошо. Да и вообще эппл сильно против разнообразия железа. И к поддержке стороннего зоопарка переферии относится насторожено и требовательно, чтобы было или "работает без проблем", или "не работает совсем" и не было "да что за ерунда происходит с этой штуковиной" (ну согласитесь - с линуксом нормально потратить несколько часов своего времени, прежде чем смириться что вот именно эта логитеховская блютусная клавиатура не работает в линуксе, ни так, ни сяк, ни наперкосяк. С эпплом просто возьмут другую модель клавиатуры, желательно производства эппл. А если не работает в виндовсе - то это просто брак)


      1. thevlad
        14.10.2022 16:18

        Поставил домашним Kubuntu из коробки, ноут и два системника. Полет нормальный, подмена даже не была особо замечена. Главное показать "куда кликнуть, чтобы интернет запустить" )


        1. anka007
          14.10.2022 16:45
          +1

          Потому что вы всем этим занимались, и в случае любого вопроса тоже вы будете заниматься, и задач сложнее "запустить инет" не возникает. Это же не ваша мама (или кому вы объясняли куда кликать) взяла в магазине готовый ноут с линуксом, ввела пароль от вайфая и оно все заработало и проблем не было, это знающий человек донастроил так, чтобы осталось кликнуть. На самом деле это достаточно высокая квалификация даже для эникея. Да даже объяснять куда кликать для инета пришлось! Представте, что вы поехали в командировку в уганду на пол года, а вас российский родственник уровня "объясни куда кликать" попросил вот прям срочно без ограничения по деньгам что-то выбрать, чтобы видео в одноклассниках смотреть и мемуары писать. Посоветуете кубунту?

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

          Решение всех остальный задач "как сделать ..." под линуксом обычно начинаются с "выполните в терминале 'sudo ....' " и далее откровенное шаманство понять и запомнить которое практически невозможно.


          1. thevlad
            14.10.2022 17:24

            Ну в моем случаи кубунта встала прямо из коробки, если бы конечно было какое-то специфичное железо, все было бы ни так весело. По моим наблюдениям настроенный линукс сломать сложнее винды. Конечно, если стоит вопрос поддержки, то ни все так однозначно.


            1. anka007
              14.10.2022 18:49
              -1

              За последние несколько лет видела несколько вариантов, всегда были подводные камни и проблемы.

              Ну вот года три назад своя эпопея. Второй домашний ноут, делл, задача - видео да интернет. Возраст, когда хотелось ковыряться и настраивать прошел, хочется просто включить и пользоваться. Первый дистрибутив. По отзывам - ноль проблем, все из коробки. Эй, а что со спящим режимом и внешним монитором?! Да это не тот дистрибутив! Вот следующий "ноль проблем, работает из коробки". Опять спящий режим? Понятно, ждать не стоит, настроили. Пришло обновление. В новой версии ядра не работает вайфай на ноуте, совсем, баг известен. Системе неделя, там кроме нескольких картинок ничего нет. Сносится, ставится следующий "ноль проблем, работает из коробки". В обновлении сам себе ломает граб (баг уже известен), грузится только оемный виндовс. ОК. Понятно. Объединить разделы диска.

              С рабочим ноутом тоже не все гладко, переодически требуется "sudo чтототам" по рецептам из гугла, благо общая подготовка позволяет это делать. Но вот родственникам, с короторыми я не живу рядом, или если бы это был единственный доступный компьютер в семье, я бы ни в коем случае не советовала бы связываться с линуксом.


          1. grumbler66rus
            14.10.2022 17:28

            1) "Но если ваш сценарий использования далек от "запустить браузер,
            посмотреть киношку" и в любом случае придется много чего настраивать, и
            главное есть кто всем этим будет заниматься - линукс хорош. "

            2) "Потому что вы всем этим занимались, и в случае любого вопроса тоже вы
            будете заниматься, и задач сложнее "запустить инет" не возникает. ...это знающий человек донастроил так, чтобы осталось кликнуть."

            Вы себе же противоречите.


            1. anka007
              14.10.2022 19:02
              -1

              Ага. Даже под запустить браузер и посмотреть киношку надо настраивать. Начиная с выбора дистрибутива. При этом люди, которые работают с линуксом зачастую настолько привыкли к этим мелким задачам по настройке и установке, что почти их не замечают, они воспринимаются как что-то само собой разумеющееся.

              Пример: возьмите любой комп/ноут с оемной виндой. То, что он заработает после нескольких эникеев и ввода паролей не вызывает сомнения. А вот вставляя флешку с линкусом всегда есть немного драйва "а заработает ли". Будет ли "ого, печать сразу заработала" под виндой? Нет, это само сабой разумеется. А под линуксом обращает на себя внимание, ну надо же!


              1. grumbler66rus
                14.10.2022 20:03
                +8

                "Ага. Даже под запустить браузер и посмотреть киношку надо настраивать. Начиная с выбора дистрибутива. ... Пример: возьмите любой комп/ноут с оемной виндой."

                Сначала вы ведёте речь о запуске браузера, который надо настраивать.
                Затем перескочили на установку системы на компьютер
                Пример у вас и вовсе про предустановленную систему.

                Это у вас три софистических приёма:
                - доведение до абсурда
                - подмена темы
                - переменные условия

                Начну с примера.
                Пример: возьмите любой компьютер или ноутбук с предустановленным GNU/Linux, примеры ноутбуков в продаже

                Мой сын, ему тогда было 7, без каких-либо сложностей стал сразу смотреть мультики с Youtube на Nettop Acer Veriton N4660G с предустановленным Endless Linux. Он и подключал этот неттоп к телевизору сам, всего лишь переткнул два кабеля и включил в розетку.

                Продолжим выбором дистрибутива.
                Выбор дистрибутива ОС означает, что ОС на устройстве не установлена производителем. Большинство современных компьютеров (ноутбуков, неттопов) продаются без дисковода.
                В настоящее время продажи windows в России прекращены, но где-то ещзё есть остатки, там Windwos 10, windows 11, windows 8.1. Выбор, однако!
                Если говорим о скачивании с торрентов, во-первых, выбор ещё шире, от Window 7 как минимум, да и версий windows 10 существенно больше одной, и во-вторых, до торрентов ещё нужно суметь добраться и суметь оттуда скачать.
                И неизвестно, какая из этих ОС будет нормально работать на конкретном устройстве (не для всех из них есть драйверы).
                Далее. как вы думаете, что будет делать условный домохозяин(ка), купив дистрибутив windows, и обнаружив, что там DVD, а привода нет. И если это нетбук, его даже вставить некуда, не говоря о потере гарантии в результате разборки устройства.
                Если речь о скачивании, то, скачав ISO, он сначала не будет понимать, что делать, и только обратившись к более-менее специалисту или чайнику-соседу-приятелю-другу, узнает, что нужно записать файл на флешку. Записав его на флешку, наш персонаж внезапно обнаружит, что система с флешки не загружается - потому что записывать нужно специальной программой, а инструкция в комплекте отсутствует.
                Ну и потом будет танец с бубном по поиску и установке драйверов.
                Теперь берём линукс.
                У всех дистрибутивов линукса образ флешки скачивается с официального сайта. У всех популярных дистрибутивов на сайте есть подробная инструкция по её записи на носитель на той же странице, где есть ссылка на скачивание. Скачав образ и программу, записав на флешку и установив в компьютер, человек получает рабочую систему. А может и просто в live-системе с флешки работать.

                И, наконец, настройка браузера.
                Вы удивитесь - браузер в свежеустановленной Windows запустится только после того, как вы ответите там на несколько заковыристых вопросов.
                В Linux предлагаемый в зависимости от дистрибутива Firefox, Chromium или Opera лишних вопросов не задаёт, а сразу открывает начальную страницу и страницу с информацией.


                1. Ritan
                  15.10.2022 03:36
                  +1

                  Начальную страницу-то оно может быть и покажет, а вот дальше.

                  Вчера потратил минимум 3 часа на настройку аппаратного ускорения видео и не победил. Firefox запускается и работает, но выдаёт, что любое декодирование blocklisted by gfxInfo. Хром отказывается ускорять какие-либо форматы видео, кроме h264, хотя драйвер их поддерживает. Chromium вообще отказывается включать ускорение в сборке без специальных фиксов. В результате плюнул и перезагрузился в винду, где тот же firefox просто поддерживает это всё сразу после установки.

                  Ситуация в Arch и Ubuntu одинаковая - в обоих я максимум получил поддержку декодирования только маленькой части форматов( например ни vp9, ни hevc не работают ). Что примечательно, mpv те же форматы отлично открывает с ускорением, т.е. списать всё на баги драйвера нельзя.

                  Всё действо происходило на ноутбуке с ryzen cezanne и amdgpu драйвером, от которого в восторге всё комьюнити Linux.

                  Не поймите неправильно, для разработчика Linux отличная система, но вот для домашнего использования "поставил и забыл" - нет.


                1. saboteur_kiev
                  15.10.2022 04:33

                  помотреть ютуб сейчас можно с любого утюга.

                  Если 90% задач пользователь может сделать из условного firefox, то ему вообще все равно какая ОС стоит.


  1. event1
    14.10.2022 17:34
    +1

    Это для вас "ПО медленное", а для индустрии — населению под те же самые задачи каждые два года новые железки продают. Понимать надо.


  1. Serpiph
    14.10.2022 17:35

    У меня подобные проблемы с MS Word, причём разных версий, от 2010 до 2019. Открываю документ, начинаю с ним работать. Постепенно начинает тормозить и спустя полчаса каждое нажатие символа или клавиши курсора занимает у него от 0,5 до 3 секунд. Нажал кнопку и ждёшь, пока он этот символ вставит в текст и выведет его на экран. Перезапуск всей программы "с нуля" восстанавливает скорость, но опять ненадолго. Словно сохраняет все-все мои действия. И это на ноуте 8750H с 64 ГБ памяти и SSD на борту. Как лечить непонятно. Остальные программы, в том числе и LibreOffice, таких проблем не имеют.


    1. vtal007
      14.10.2022 18:26

      проверка на другом компе, чистая установка с нуля. Лечение проблем известное
      Может майнер, может диск концы отдает.


      1. Serpiph
        14.10.2022 22:42

        На трёх разных машинах (один стационарный и 2 ноута) и на разных дистрибутивах Office повторилось. Лишь 2 момента одинаковые: лицензионный Kaspersky и каждый раз новая купленная официально лицензия Office, а установщик скачивал каждый раз с сайта Microsoft. Это всё сбивает с толку.


    1. cepera_ang
      14.10.2022 20:21
      +2

      Какую-нибудь синхронизацию OneDrive отключить. И вообще разлогиниться из учётки. Такие тормоза — это характерный признак того, что что-нибудь в сеть отправлять пытается, а нужный адрес заблокирован или ещё какие-нибудь проблемы.


      1. Serpiph
        14.10.2022 22:43

        Спасибо, попробую проверить.


    1. daggert
      15.10.2022 00:20
      +1

      Интересный вы баг словили. У меня в организации работают все на 2010 и с файлами по 300-500 страниц, такого не видел. Если найдете в чем была проблема - создайте пост на хабре или мб хотя-б тут отпишитесь пожалуйста.


      1. Serpiph
        16.10.2022 08:49

        Решился на эксперименты, начал искать причину тормозов, когда после открытия документов даже простое движение курсора по тексту начинает всё больше и больше тормозить. На ноуте стоит только одна версия MS Word, других не ставил никогда.

        В сети на сайте поддержки Microsoft мне на глаза попалось предложение с запуском редактора в безопасном режиме с ключом "/safe", это дало направление для поиска, так как с ним тормоза пропали. В том же сообщении было написано, на что же влияет этот самый ключ. Так я вышел на надстройки.

        В надстройках нашлись как объекты COM, так и "действия". Начала постепенно каждую строку отключать. Оказалось, что причиной тормозов оказалась COM-надстройка от Flir Report Studio - приложения, с помощью которого создаются отчёты по результатам обследования с помощью тепловизоров Flir.

        Да, у меня стоит и Abbyy FineReader, но его надстройка не мешает работе Word. Во всяком случае, там том коротком промежутке времени, что я отводил для стресс-теста. Пока отключил только Flir Report Studio, буду следить дальше.


    1. Jurij_taurex
      15.10.2022 15:28
      +1

      Ну, во-первых он и сохраняет все ваши действия с определенной частотой - фоновое сохранение.

      Если на одной ОС установлены разные версии ворда, то в шаблонах, скорее всего, сплошная каша и это замедляет работу каждой из версий в опреденной степени, особенно самой старой. Итого, удаляем все версии, лезем в реестр ищем остатки, лезем в скрытые папки пользователей и тоже ищем остатки. После этого ставим одну версию на одну ОС.

      Если на одной ОС стоит одновременно ворд и, например, Абби лингво, файнридер, промт (и это только самые массовые доп проги), то черти что творится и в шаблонах, и в надстройках. Например, одну и ту же функцию проферки орфографии одновременно пытаются делать и ворд, и Абби, и промт, и даже Вин 11 (вроде есть у нее встроенная служба, чи функция). Лезем в настройки ворда, в пункт надстройки и отключаем там все, что нам не нужно, и в винде тоже.

      Плюс, есть нюансы по типу, если документ создавался на ворде 2019, в нем есть сжатые(по меркам 2019-й версии картинки), то открыв такой документ в ворде 2010, получим, скорее всего, торможение при приближении к этим картинкам. Старая версия в плане картинок, формул и еще хрен знает чего работает совершенно по иному. В смысле ей на то время(а это, ребзя, 12 годиков тому) попросту не требовались такие возможности.

      Ну, это как предположения. Основанные на личном опыте и опыте разной степени знакомых.


  1. acordell
    14.10.2022 19:11

    Давно этому не удивляюсь... Как-то имел удовольствие общаться с людьми работавшими в MS в разное время на разных позициях на разных проектах, в том числе и на винде, в том числе и в разработке. Увы, но многогранное и емкое слово "бардак" практически полностью передает состояние разработки в данной корпорации. Казалось, что такая крупная контора, с такими ресурсами, настолько притягательная для карьеры... Вот где-где, а у там-то все должно быть по уму, но.... нет.


  1. Vitalley
    14.10.2022 19:54
    +2

    Оставлю это здесь, весь ответ на статью в одной картинке.


    1. Ritan
      15.10.2022 03:44
      +3

      Нужно уточнить, что на последней картинке каждый костыль - такое же дерево, требующее как минимум втрое больше ресурсов, чем сама хотелка пользователя. И каждый содержит драйвер контроллера Xbox 360


    1. Mike-M
      15.10.2022 12:10
      +1

      Между «Как было реализовано прораммистами» и «Как было внедрено» не хватает «Как было протестировано» )


      1. Hu3yP7
        15.10.2022 16:22
        +2

        Не хватает потому что не тестировали :^)


  1. nixtonixto
    15.10.2022 08:23

    Почему у RuntimeBroker сканирование занимает в 5-10 раз больше времени? В этой папке у меня всего около 44 тысяч документов, что за фильтрация используется, которая добавляет на каждый файл лишние полмиллиона тактов?

    Вот поэтому я сразу сортирую файлы по подкаталогам и для каждой программы по возможности назначаю свою папку. Чтобы не было этой помойки из 44000 файлов в папке Мои документы, да ещё с именами типа 45a3d23ec4b299ad.pdf


    1. iig
      15.10.2022 11:38

      я сразу сортирую файлы по подкаталогам и для каждой программы по возможности назначаю свою папку

      Делаете работу, с которой лучше справился бы компьютер ;) Увы же, если продолжать ездить на древних абстракциях, в которых данные это файлы, а файлы хранятся в файловой системе с каталогами, так и будет. К революции типа использования дополнительных атрибутов или базы данных вместо файловой системы мы (и 100500 уже существующих программ) не готовы.


  1. anonymous
    15.10.2022 09:52

    НЛО прилетело и опубликовало эту надпись здесь


  1. progchip666
    15.10.2022 10:39
    +1

    Универсальность и ускорение процесса программирования за счёт использования библиотек требует жертв. Когда то Спектрум обходился 16 К ОЗУ в которой ещё и графика умещалась!


    1. vassabi
      15.10.2022 12:33
      +1

      все же то была графика уровня спектрума, сейчас это будет только для "теплой ламповости"


  1. Mike-M
    15.10.2022 12:27

    Команда dir /s может отсканировать мою папку с документами менее чем за две секунды. Почему у RuntimeBroker сканирование занимает в 5-10 раз больше времени?
    Из личного опыта: потому что dir выполнен на компилируемом языке, а RuntimeBroker — на интерпретируемом.
    Не уйду с CPP-приложений до тех пор, пока их не перестанут выпускать.

    кнопка записи должна быть отключена, пока приложение не готово.
    При этом пользователю должно быть понятно, по какой причине кнопка записи сначала отключена, а потом волшебным образом становится доступна.

    Похоже, в переписанной версии этого бага нет
    Интересно узнать, остался ли Runtime Broker в переписанном приложении Sound Recorder?
    У кого Windows 11 посмотрите, пожалуйста.

    я опасаюсь за мир ПО, в котором приложения не исправляются, а переписываются.
    Я больше опасаюсь за мир ПО, в котором наивысшим приоритетом при разработке приложений является только одно правило — fast time to market.


    1. iig
      15.10.2022 12:37

      потому что dir выполнен на компилируемом языке, а RuntimeBroker — на интерпретируемом.

      Потому что dir - обертка вокруг нескольких системных функций, а RuntimeBroker - НЕХ выполненная в виде отдельного процесса. Там может что угодно случиться, начиная с лагов межпоточной синхронизации.


      1. Mike-M
        15.10.2022 12:58

        Лаги синхронизации — это да.
        Но и то, что системные функции написаны на компилируемом языке, тоже не стоит сбрасывать со счетов )


    1. mayorovp
      15.10.2022 12:43

      а RuntimeBroker — на интерпретируемом

      Это на каком именно?


    1. progchip666
      15.10.2022 12:56

      Согласен с последнем утверждением, и это безусловно играет на "утяжеление" реализации программного кода. А кроме того, кто будет покупать новое железо если старое не будет тормозить на новом ПО.


  1. AetherNetIO
    15.10.2022 15:28

    Любил Винду за то, что можно всё настроить, выключить. Софта валом. Но теперь же эти автообновления…

    А вот по теме: msvc компилирую и запускаю проект на старом компе - 10 минут. На новом i9 - 30 секунд. Из которых 10 на запуск. Разыскал - антивирус. Каждый новый билд сканирует. В исключения добавил, выключил вообще все проверки. Всё равно 5 сек по менеджеру задач съедает антивирус. Правил реестр. Всё равно никак. Мне работать нужно. Дайте инструмент.


    1. perfect_genius
      15.10.2022 21:43

      Прям презумпция виновности программиста какая-то. Мол, а не вредонос ли создаётся.