1. Куча / Говнокод #27764

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    make_process_name("client", {Node,Key}) when is_atom(Node) ->
        %% This function is going to be called enough to warrant a less pretty
        %% process name in order to avoid calling costly functions
        KeyStr = erlang:integer_to_list(erlang:phash2(Key)),
        NodeStr = erlang:atom_to_list(Node),
        erlang:list_to_atom("gen_rpc.client." ++ NodeStr ++ "/" ++ KeyStr);

    Самый страшный грех, который только возможен в Erlang.

    Запостил: CHayT, 22 Октября 2021

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

    • SEO post
      Ответить
    • А что здесь такого? Ну поклеили имя процесса из чего-то там...
      Ответить
      • Утечка атомов — это пиздец VM. Атомы очень быстро матчатся (это инты + табличка с маппингом в строчки — для удобства юзера и для копелятора), но их количество в системе ограничено.
        Ответить
        • А, засрали всё атомами... В JVM такое тоже можно сделать, емнип.
          Ответить
          • и в руби можно, только там символ вместо атома
            http://alwayscoding.ca/momentos/2010/12/04/the-ruby-symbol-is-a-memory-leak/
            Ответить
        • Поэтому я за Си. Там нет никакой "VM" и никаких "атомов".
          Ответить
          • Если ты пишешь на "Си" под "Винду", то там тоже можно наткнуться на атомы. Я понимаю, что в "контроллерах" никакой "винды" нет, но мало ли что.
            Ответить
            • В X11 тоже есть
              Ответить
            • Это понятно, если на "Си" писать свою "VM", то там и "VM" будет. Но в самом "Си" ведь никакой "VM" изначально нет.
              Ответить
            • Причем на поразительно херово документированные.
              Зато там может быть WinCE и PocketCMD
              Ответить

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