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

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

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

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

  • 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