Кресты / Говнокод #26677 Ссылка на оригинал

0

  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 digitalEugene, (Updated )

Комментарии (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
                            Ответить

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

Помни, guest, за тобой могут следить!

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


    8