1. JavaScript / Говнокод #25166

    +2

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    user_pref("general.useragent.override.3dn.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.at.ua", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.clan.su", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.do.am", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.moy.su", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.my1.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.narod.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.ae", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.com", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.es", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.hu", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.kz", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.lv", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.net", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.org", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");
    user_pref("general.useragent.override.ucoz.ru", "Mozilla/5.0 (Windows NT 6.1; rv:52.9) Gecko/20100101 Firefox/52.9 u01-04");

    Ко-ко-ко, куд-кудах-тах-тах!

    Запостил: nemyx, 08 Декабря 2018

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

    • SEO-пост: отключаем рекламу в Юко-ко-ко-козе.
      Ответить
    • Повышает ли производительноссть анролл в скриптовых языках?
      Ответить
      • Если JITа у тебя нет великий магистр,
        То код скриптового языка лежит в области данных твоей
        И не указывает регистр IP на него
        А стало быть префетчер x86 идет по пизде
        И не применим анрол здесь
        Ответить
        • Причём здесь префетчер, ip и вообще x86?
          Ответить
          • Анрол нужен потому что CPU префетчит код последовательно и декодирует его. Каждый JMP заставляет его выкинуть то, что он уже сдекодировал. Именно потому

            for(int i =0; i < 50250; i++) {
            foo();foo();
            }

            может оказаться быстрее чем
            for(int i =0; i < 100500; i++) {
            foo();
            }


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


            Вот такие у меня были мысли. А что имел ввиду ты?
            Ответить
            • Дело не только в префетчинге. При организации суслика приходится производить проверку на каждой итерации. Время тратится не только на JMP, но и на CMP, INC и прочую питушню.
              Ответить
              • Ты прав, спасибо.

                Однако мне кажеца что в современном мире главной проблемой неанрольного сусла являлся именно отсос префетча а не тупое сравнение.

                Хотя наверное важнее всего это было в момент нетбёрст, но и сейчас довольно важно. Проц не только сосет команды и дешифрует их, он их еще и выполняет как мы знаем по мельдонию
                Ответить
            • Ретчь просри птовые языки.

              > твой код не лежит в области кода
              вот это здесь совсем не причём.

              > оттуда его никто не тягатет,
              интреплетатор тягаэ, парсит и исполняет.
              Ответить
              • >>Ретчь просри птовые языки.
                некоторые сриптовые могут в JIT!

                >>вот это здесь совсем не причём.
                как раз причем!

                >>интреплетатор тягаэ, парсит и исполняет.

                да, но анрол ему не поможе


                Единственное с чем я могу согласица -- это уменьше количества проверок как кукарекнул уважаемый Питух
                Ответить
                • > некоторые сриптовые могут в JIT!
                  Немножко неправильно выразился, я про интреплетируемые или копулируемые в баткод.

                  > как раз причем!
                  Как влияет на скорость роботы то, где лежат читаемые данные, в области кола или в области банных?

                  > уменьше количества проверок
                  Может и работы будет меньше:
                  // создание массива, итерация по массиву, конкатенация
                  for (var i in ["bar","baz","putuh","balls"]) foo("foo: " + i);
                  vs
                  //несколько вызовов с константами
                  foo("foo: bar");
                  foo("foo: baz");
                  foo("foo: putuh");
                  foo("foo: balls");
                  Разница только в том, что 2 вореант скучный.
                  А топтемезаторы в скриптояпах почти не заметны.
                  Ответить
                  • >>Как влияет на скорость роботы то
                    Давай я попробую полностью раскрыть свою мысль, а ты попробуй за ней проследить. Мне кажется у нас непонимание.

                    CPU имеет регистр IP, который указывает на инструкцию (опустим сейчас сегменты и страницы для простоты).

                    CPU постоянно делает следующее:
                    1) читает инструкцию
                    2) декодирует
                    3) выполняет
                    4) увеличивает IP
                    5) GOTO 1

                    В какой-то момент было замечено что код лежит в памяти последовательно, и CPU начал предзагружать код.

                    Пока одна часть ЦПУ (ALU например) выполняет инструкцию N, префетчер CPU уже загружает инструкцию N+1 (на самом деле он грузит его из кеша, а контроллер кеша уже ходит в память, но сейчас мы это опустим).

                    Далее декодер декодирует эту N+1 (переводя из ISA x86 в микрокоды)

                    Если инструкция N+1 не имеет зависимостей от результата выполнения N то процессор начинает ее выполнять используя станции резервирования вместо регистров (см "алгоритм Томасуло").

                    В итоге когда N выполнена, процессор уже может сразу же взять результат N+1.

                    Если бы он этого не делал, то декодер и префетчер и другие блоки ALU простаивали бы.

                    Если у тебя есть код
                    foo()
                    foo()
                    foo()

                    то это прекрасно работает. Если у тебя есть код
                    while(true) {
                    foo();
                    }

                    то в момент заворота цикла происходит JMP, адрес следующей инструкции меняется, и вся работа префетчера и декодера и ALU по заданию N+1 отправляется в мусор.

                    Именно по этой причине цари делают анрол.

                    Согласен-ли ты пока с моей выкладкой?
                    Ответить
                    • > то, где лежат читаемые данные
                      Я же скаэозал, я про иртрепеольторы.
                      Ответить
                      • нтропртаторы мгут и джитися и тгда разнцы нет
                        но если не жжится то тгда с тчки зрения цпу это прст даннеы и тгда ты прва
                        Ответить
            • > может оказаться быстрее
              Не всегда если второй вореант уместится в кэш, а первый нет, то второй будет быстрее.
              Ответить
              • Это правда.

                Если анрольнуть с барского плеча так, что тело циклопа начнет занимать 1004500 мегабайт то конечно же его придется каждый раз читать с мапяти а не из кеша команд и будет хуево
                Ответить
                • >1004500 мегабайт
                  Не анрольльте поцаны... Память распидорасило, пишу с винчестера!
                  Ответить
    • Зачем ты ходишь на юкоз?
      Кто вообще ходит на юзкоз кроме доширакных недопрограммистов?
      Ответить
      • Некоторые нехорошие люди кидают ссылки на юкококозовские сайты. Переходишь –— а там реклама прёт изо всех щелей. Если подменить User-Agent, то рекламы не будет.
        Ответить
        • Зачем ты ходишь по ссылкам нехороших людей?
          Ответить
          • А что делать, если искококомое нашлось на юкококозовском сайте, а на нормальном найти не получается?
            Ответить
            • А что там может найтись? Статья Дениса Попова?
              Ответить
              • Пещеры Хулиона, симулятор строителя метро, сапёр с произвольной топологией, симулятор трубопровода, жидкий арканоид.
                Ответить
                • Блядь, ты на сайте Тараса чтоли??
                  Ответить
                  • Я качнул оттуда пещеры хулиона, трамвай и арканоид
                    Ответить
    • Баяниссимо.
      Ответить
    • Давайте ругать "Gecko".
      Ответить

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