Открыл в Gwenview каталог с лоровскими пикчами (13287 изображений, вес 6,2 ГБ). Gwenview начал жрать 2 потока процессора и оперативку под генерацию миниатюр.

Потом оперативка кончилась и система зависла, т.к. свопа нет. я не стал ждать развязки и нажал резет.

В итоге Gwenview, полностью сгенерировав миниатюры, занял 9,5 ГБ оперативки.

Я не эксперт в разработке программ, но по-моему, так не должно быть.

  • ThePlayerZero
    link
    fedilink
    arrow-up
    0
    ·
    3 years ago

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

    • l-xoidOP
      link
      fedilink
      arrow-up
      0
      ·
      3 years ago

      Я бы не назвал это багом. Всё-таки 13200 скриншотов, 6,1 ГБ. Это, скорее, изъян проектирования.

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

      • ThePlayerZero
        link
        fedilink
        arrow-up
        0
        ·
        3 years ago

        Ты мне для начала объясни, как 6 гигов фоток на диске могло создать 9 гигов миниатюр в ОЗУ… Ну да, на диске они сжаты, а в памяти наверное нет, но блять неужели мелкость миниатюр не компенсирует этот коэффициент? Получается, что миниатюра в памяти занимает больше полноценной фотки на диске?

        • l-xoidOP
          link
          fedilink
          arrow-up
          0
          ·
          3 years ago

          Да, тоже хороший вопрос

        • torvn77
          link
          fedilink
          arrow-up
          0
          ·
          3 years ago

          как 6 гигов фоток на диске могло создать 9 гигов миниатюр в ОЗУ…

          На диске скомпрессированы, в ОЗУ/VRAM распакованные?

          • l-xoidOP
            link
            fedilink
            arrow-up
            0
            ·
            3 years ago

            Много ты сожмёшь в файлах jpeg и png?

            • torvn77
              link
              fedilink
              arrow-up
              0
              ·
              3 years ago

              Так сравни размер в png/jpeg и в bmp/raw.

              • ThePlayerZero
                link
                fedilink
                arrow-up
                0
                ·
                3 years ago

                Ну из данных выше уже понятно, что миниатюры на диске 2 Гб, а в оперативной памяти 9, грубо говоря в 4 раза они распухают.

                Всё равно такое потребление рамы это баг, возможно ещё не заведённый

                • torvn77
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  3 years ago

                  Я не про разбухание в ОЗУ, я про сравнение форматов как таковых.
                  RAW/BMP это просто таблица цветов пикселей, его размер не зависит от сложности картинки, а только от размера и глубины цвета.
                  И белый шум, и заливка одним чистым цветом будет иметь одинаковые размеры, именно в таком виде в конце картинки и будут в ОЗУ.

                  • ThePlayerZero
                    link
                    fedilink
                    arrow-up
                    0
                    ·
                    3 years ago

                    И белый шум, и заливка одним чистым цветом будет иметь одинаковые размеры, именно в таком виде в конце картинки и будут в ОЗУ.

                    именно поэтому их там быть и не должно

                    • torvn77
                      link
                      fedilink
                      arrow-up
                      0
                      ·
                      3 years ago

                      именно поэтому их там быть и не должно

                      Именно в таком виде они и отображаются на монитор, ты не можешь избежать распаковки картинки.
                      Другое дело что как правильно тут заметили нет необходимости хранить в ОЗУ ВСЕ распакованные миниатюры.

      • ThePlayerZero
        link
        fedilink
        arrow-up
        0
        ·
        3 years ago

        По-твоему, как можно решить эту проблему?

        Не поверишь, я сейчас как раз ебусь с похожей задачей на работе… Ну, идейно похожей. Много однотипны объектов занимают “дорогой” ресурс, надо уменьшить футпринт, при этом не потеряв в скорости

        Решение всегда одно и то же. Не надо держать в памяти все 13000 миниатюр. Они ведь не нужны все сразу, а только те, что отображаются на экране – ну и наверное ещё парочка экранов вперёд и назад, для упреждения. Код gwenview и KDE я не знаю, я другой программист

        • l-xoidOP
          link
          fedilink
          arrow-up
          0
          ·
          3 years ago

          Да, это явно в Gwenview что-то с алгоритмами намудили

          • ThePlayerZero
            link
            fedilink
            arrow-up
            0
            ·
            3 years ago

            При повторном запуске каталог открывается быстрее

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

            А зачем он весь этот кэш грузит в RAM для 13000 файлов… Как я уже говорил, надо багтрекер смотреть

            • l-xoidOP
              link
              fedilink
              arrow-up
              0
              ·
              3 years ago

              Я так понимаю, вот миниатюры Gwenview