Jawa / Говнокод #27661 Ссылка на оригинал

0

  1. 1
https://codeforwin.org/2018/05/10-cool-bitwise-operator-hacks-and-tricks.html

10 cool bitwise operator hacks and tricks every programmer must know

Right shift (>>) operator is equivalent to division by 2
Want to divide a number by 2 quicky. Here you go, use bitwise right shift operator to divide an integer by 2. Each right shift operation reduces the number (operand) to its half.


Просто напомню, что Jawa-петушки вручную заменяют деление/умножение на 2 на сдвиг, потому что анскильный компилятор так не умеет.

Запостил: OCETuHCKuu_nemyx OCETuHCKuu_nemyx, (Updated )

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

  • javac вообще ничего не умеет. Джит может что-то наджитить потом
    Ответить
    • Да уж, бестолковый компилятор, бестолковый jawa-программист... Незавидная участь у jawa-бля́дей.
      Ответить
    • При этом заменять деление сдвигом умели компиляторы разных ЯП уже в восьмидесятые, а возможно и ещё раньше. Причём это было не многомегабайтное говно, как «Йажа». Подозреваю, что ещё «Фортран» умел, надо проверить.
      Ответить
      • Так и Йажа умеет. Эти питумизации в «Hotspot». Как и замена деления на копзтанту умножением.
        Ответить
  • Джаву часто критикуют, но нужно помнить, что не каждая компания может позволить себе профессионального программиста на серьезных языках, да и не всегда в таком программисте есть смысл.

    Некоторые задачи (вроде несложного веб магазина или формочки для обратной связи) вполне может решить и т.н. "jawa программист".
    Ответить
    • > Джаву часто критикуют

      И за дело!

      > что не каждая компания может позволить себе профессионального программиста

      Достаточно среднего ума, чтобы 1: не кодить на jawa, 2: писать без ошибок тривиальный код.

      > на серьезных языках

      Да, jawa – кастрированный, игрушечный язык. Jawa недалеко ушла от блоксхем для операторов интерпретаторов.

      > да и не всегда в таком программисте есть смысл.

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

      > Некоторые задачи (вроде несложного веб магазина или формочки для обратной связи) вполне может решить и т.н. "jawa программист".

      Ну, кому-то же нужно делать всякую грязную и неблагодарную работу: не программистам на «Nim» или «С++» же)
      Ответить
    • > Некоторые задачи (вроде несложного веб магазина или формочки для обратной связи) вполне может решить и т.н. "jawa программист".
      ПХП-макака тоже может и это будет дешевле. Поэтому я за «PHP»
      Ответить
  • Лол, а я просто юзаю операторы согласно семантике, а конпелятор сам разбирается.
    Ответить
    • Справедливости ради нужно сказать, что ручная замена умножения на сдвиг это последнее, что нужно сделать при устранении ботлнеков в коде на джаве.

      Можно для начала не создавать на каждую итерацию цикда 48_000 объектов, или что там обычно джавушки делают
      Ответить
        • У тупых жавашков это разное, азаза.
          Ответить
          • Ты даже не представляешь НАСКОЛЬКО разное в джаве массив интов и лист интов:)
            Ответить
            • Честно говоря, мне и не надо. Я же не лаборант, проводящий анализ кала на коки.
              Ответить
          • Там ещё с какой-то версии завезли автобоксинг/автоанбоксинг, так что не знаешь, где у тебя нативные типы развернутся в объекты. Надо байткод смотреть.
            Ответить
            • Там где в обжект засунул -- там и развернутся. Он же не просто так ради прикола боксит, а потому что по-другому никак.
              Ответить
          • https://ideone.com/gO9swy

            Integer i1 = new Integer(1);
            Integer i2 = new Integer(1);
            System.out.println("i1 > i2: "+(i1 > i2));
            System.out.println("i1 >= i2: "+(i1 >= i2)); // true
            System.out.println("i1 == i2: "+(i1 == i2)); //false


            >= сравнивает значения, поэтому вернёт true.

            А == сравнивает адреса объедков, поэтому вернёт false. Какой багор )))
            Ответить
              • Ага.

                Почему так некокококонсистентно сделали? Тогда уж надо добавить сравнение адресов через < и > (не знаю, зачем оно нужно в «Йаже», которая не позволяет работать с указателями, но раз уж их начали сравнивать, то трудно остановиться).
                Ответить
                • Сравнение адресов на < в языке с гц -- это прямой путь в ад.
                  Ответить
                • Кстати, а valueOf для чисел больше 128 тоже ведь разные инстансы для одного числа может вернуть?

                  З.Ы. It may cache values outside of this range. Вот и приехали, implementation-defined в этой вашей джаве. Т.е. сравнивать числа по адресу никогда нельзя, даже с valueOf.
                  Ответить
            • хотел бы тут посоветовать какой-нибудь лишп

              но потом вспомнил, что в Рэкете есть
              equal?
              и есть
              eq?


              попробуй без шпаргалки разобраться, кто про что
              Ответить
            • Ахахахахахп, тупые долбоебы
              Ответить
      • Бедные Jawa-петушки. Они даже структуру на стеке выделить не могут.
        Ответить
          • Сделать его может только джит
            Ответить
            • Кстати, а почему AOT конпеляторы загнулись? Было же что-то от авторов gcc.

              Слишком много динамических настроек в XML'ках, из-за которых структура проги непонятна до старта и хрен что оптимизнёшь?
              Ответить
              • Не нужно пытаться оправдать анскильность Jawa-петухов сложностью XML-ек.
                Ответить
                • Если на сишке писать всё подряд через индирекции, управляемые через XML, то там тоже нихрена не оптимизнётся.
                  Ответить
              • В современной жаве уже нет XML, там DI реализуют кодом.
                Но там всё равно ест рефлексия, а это всё равно медленно.

                Когда лодаер загружает класс, он записывает по каким адресам какие методы, а в случае рефлексии там нужно как-то по строке искать, и это долго, ну и джититься наверное оно хуже

                Я видел как питух через ORM заполнял несколько десятков тысяч сложных объектов, и это реально создало боттлнек. Правда это было 15 лет назад
                Ответить
                • Хм, т.е. теперь во время конпеляции можно узнать что какие интерфейсы реализует?

                  > ORM

                  ORM'ы ведь тоже со "статической" конфигурацией на собачках, а не из базы или каких-нибудь хмлок? Тогда можно заранее всё разобрать и сгенерить код без рефлектора.
                  Ответить
      • > не создавать

        А вот тут сложный вопрос...

        Я сварщица не настоящая, но от реюза объектов GC тоже может деградировать. Там же ссылки из старых поколений в новое начинают появляться, а они не бесплатные.

        Вполне возможно, что создать-и-выбросить будет лучше по пирфомансу.

        З.Ы. Блин, вот у вас там памятью управлять сложнее чем в крестах... Надо всякие умные статьи читать.
        Ответить
        • Нужно еще профильнуть через JMH.

          Но джава-питухи обычно микрооптимизациями не занимаются.

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

          Лазить за ними в говнокеши тоже не бесплатно.
          Ответить
  • А какие конпеляторы «Йажи» вообще бывают? Есть «gcj» (из «gcc», хотя интеграция там слабая), есть «ecj» (я его даже в «Андроиде» запустил. Что ещё есть помимо «javac»?
    Ответить
    • Пусть «ASD_77» напишет нормальный.
      Ответить
      • К сожалению, Jawa – это тупорылая абоминация для простофиль в мире программирования. Пытаться исправить косяки (которые являются неотъемлемой частью Jawa) равносильно тщетным потугам виндузятника выпилить телеметрию или яблобляди убедить техподдержку восстановить его «iCloud» с «iTunes».
        Ответить
  • jawa просто знает, что среди 8 миллиардов устройств может найтись некоторое не на двоичной логике
    Ответить

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

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


    8