1. C++ / Говнокод #26677

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if(object)
        if(object->isSolid)
            event.isCancelled = true;
        ;else //<
            throw NullEventArgumentException("object == nullptr");

    Новый токен в C++ про который знает только 0.6% говнокодеров

    Запостил: digitalEugene, 21 Мая 2020

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

    • Ебать, а это вообще компилицца? К чему относится else не понятно.
      Ответить
      • Нет конечно. Пустой оператор прерывает if и else уже ни к чему не относится.
        Ответить
        • Борманд, у меня к тебе вопрос.

          Питух хочет разместить на файловой системе примерно сто тыщ файлов.
          Медианный размер файла -- 100 байт. Минимальный 1. Максимальный -- 400 мегабайт (но таких файлов очень мало).

          Питух выделяет на этого отдельную файловую систему ext4, и настраивает её так:

          "block size" -- 1024 (учитывая медианный размер файла)
          "bytes-per-inode" -- тоже 1024 (чтобы не обосраться с нехваткой inodes).
          Питух так же отключает atime (к сожалению, остальные таймы ему нужны).

          Всё остальное остается по умолчанию, как в tun2fs.conf, например dir_index и пр.

          Файлы пишутся на ФС каждые пять минут, старые удаляются раз в час.

          Какие-то еще советы можно дать питуху чтобы уменьшить фрагментацию и проёбываение места?
          Ответить
          • В целом, я бы не трогал настройки вообще. Ну atime отрубить разве что, да.

            Даже с дефолтным 4к блоком 100к файлов займут всего полгига. У тебя же явно не гиговый диск, чтобы на спичках экономить. Да и одна запись в пять минут - не хайлоад.

            Тут главное, имхо, не валить все эти 100к файлов в один каталог. Раздели их по часам, по первым цифрам хеша или ещё как-то на более-менее мелкие подкаталоги. Иначе потом заебёшься удалять.
            Ответить
            • Сколько файлов посоветуешь иметь в одном каталоге? 1000 нормально, или многовато?

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

                Журнал нет никакого смысла отрубать. Один сраный файл в 5 минут твоя файлуха даже не заметит. Ладно бы ты там каждую секунду что-то писал...
                Ответить
                • Я неверно сказал: не один файл, а одна запись.
                  Запись может содержать от ноля до 50-ти где-то тыщ файлов. Просто старые удаляются.

                  То-есть так:
                  * Я залил 20К
                  * Через пять мин залил еще 20К
                  * Через пять мин залил 1 файл.
                  --- прошел час---
                  * Я удалил старые файлы
                  * Через пять мин залил еще 20К
                  * Через пять мин залил 1 файл.
                  итд
                  Ответить
                  • > 50 тыщ файлов

                    О_о

                    Да, сотня файлов в секунду уже намного серьёзнее выглядит... Может быть их мёржить как-то? Например сразу потоком в .tar.gz писать? Они же иммутабельные судя по всему.
                    Ответить
                    • По сети я пишу их потоком в http2, а на фс их нельзя мерджить, потому что мне может понадоиться N файлов, и я не знаю -- какие именно.

                      >сотня файлов в секунду уже намного серьёзнее выглядит
                      Ну оно же не равномерно.

                      * залил 20к
                      * пять минут спокойствия
                      Ответить
                      • > понадобится N файлов

                        Т.е. ты потом какие-то из них удалишь, а какие-то останутся лежать дальше?

                        В общем, я бы на твоём месте попробовал промоделировать такую запись, посмотреть сколько она идёт, какая нагрузка на проц и диск и т.п. Покрутил бы под средней и пиковой нагрузкой пару дней. Без замеров сложно оптимизировать. Да и может оказаться, что оно вообще не тормозит и весь пердолинг уйдёт впустую (на ssd скорее всего так и есть).
                        Ответить
                        • Я удаляю старые.
                          постоянно подсовываются новые файлы, а старые удаляются.

                          Я больше думал не про тормоза, а про фрагментацию и лишнее место на диске, но ты прав: лучше промоделировать
                          Ответить
                          • Ну если они прям всей пачкой удаляются, то можно весь пакет в zip хуйнуть с лёгкой компрессией или вообще без неё. У него случайный доступ очень хороший, любой файл можно читать без проблем.
                            Ответить
                            • Кстати, я протестировал архиваторы для кучи мелких файлов, и понял:

                              * Сжимать файлы имеет смысл только если они больше 512 примерно байт (в моем случае), иначе размер может даже стать больше

                              * Все сосут у zstd.
                              * GZIP довольно медленно жмет, но разжимает шустро. И ratio меньше, чем у ZSTD
                              * XZ/LZ2A жмет вечность
                              * L4Z жмет шустро, разжимает мгновенно, но хуевый ratio

                              По соотношению скорость/ratio мой кумир теперь ZSTD
                              Ответить
    • Извыныте забыл скобки
      Ответить
    • Крестопетух обосрался даже на этапе копипасты из кода. Впрочем ничего нового
      Ответить

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