- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
import java.lang.reflect.Field;
public class Main {
public static void main(String[] args) throws Exception {
Class cache = Integer.class.getDeclaredClasses()[0];
Field c = cache.getDeclaredField("cache");
c.setAccessible(true);
Integer[] array = (Integer[]) c.get(cache);
array[132] = array[133];
System.out.printf("%d",2 + 2);
}
}
а то вдруг дети увидят польется говно ща "ааа, дырявая жаба!", а это просто Тарас стал жабу изучать, открыл для себя рефлексию.
Как это неоправданное? Без него же не поменяешь кеш Integer'ов. Так что setAccessible() применено по назначению.
я понимаю, если бы это было использовано для какого-нибудь DI там...
Через тернии к звездам. Через крестоблядство в жабоблядство.
А у меня есть отлинчый пример про числа
Угадайте, что напечатает этот код:
http://ideone.com/gfm7J9
wvxvw, который говорил об "уг. полиморфизме" тоже должно понравиться.
Всего 1 символ поменять:
http://ideone.com/i5kvbo
С equals-то можно сравнивать любые типы, HashSet is ok. Тем более оба Numbers.
Ну да, на ideone подсмотрел бектрейс.
>Программа сравнила несравнимое и будет завершена?
Чтобы сделать вид, что я догадался до этого сам.
Ну там SecurityManager быстро запретит подобную херню.
О какой именно херне идет речь?
По факту плохих решений и лени Java работает на порядки быстрее CL.
Более того, запомни, а лучше запиши: языки не могут быть быстрее или медленнее друг друга, у них нет такого понятия, как скорость языка. Быстрее могут быть конкретные реализации на конкретных задачах. Если мы будем сравнивать Аллегро с его длинной арифметикой - там любая существующая реализация Явы останется далеко позади. Если мы будем сравнивать какие-нибудь проблемы, где выгодно динамический подход / нет возможности решить типы во время компиляции - у Явы есть все шансы проиграть, но если мы будем сравнивать какие-нибудь хорошо реализованые в Яве фишки, типа тех же коллекций, то вполне вероятно, что выиграет Ява.
При чем, опять же, если какой-нибудь из Лиспов не поленится запилить аналогичную реализацию таких структур данных, то этого преимущества не будет.
Лиспы традиционно лучше компилируются в минималистичные наборы инструкций, типа для РИСК процессоров, я не уверен что то же самое верно для Явы. CCL очень быстро работает на АРМах - а как там Ява?
На АРМах ведроид (Dalvik и теперь ART).
А как у Лиспов кода на высоком уровне - например, в Java возможна такая штука: http://www.azulsystems.com/blog/cliff/2010-04-08-inline-caches-and-call-site-optimization
По поводу вопроса: Лиспы совсем по-другому компилируются. Компилятор может и заинлайнить вообще вызов метода, не просто статическим его сделать.
Но, опять же, ссылка не имеет отношения к Яве. Она про работу конкретного компилятора. С этой точки зрения никакой разницы между Лиспом и Явой нет. Они тут оба не при делах.
HotSpot так не умеет. Инлайн методов - это недоступное никому кроме лисперов чудо.
Упоминание о РИСК наборе инструкций и ЦИСК к тому, что нужно сравнивать сравнимые вещи. Арлекин, например, написали замечательные компиляторы для процессоров Моторолы с РИСК инструкциями, но не писали компиляторы для ЦИСК. В Лисп машинах некоторые базисные функции Мак Лиспа были зашиты в железо, так же как Ява на АРМ или были даже какие-то реализации Питона в железе - если мы будем это сравнивать с интерпретацией или эмуляцией, то конечно разница будет большой. Т.е. такое сравнение не имеет смысла.
Не становится. Инлайнятся даже виртуальные методы.
И крестокомпиляторам ни исключения, ни всякие RTTI не мешают инлайнить.
>предположим, в заинлайненом коде случилась ошибка
Если инфа о стектрейсе не юзается, а thrower и catcher заинлайнились вместо, то try-catch компилируется в goto.
Если fillInStackTrace юзается происходит деоптимизация и откат к интерпретации кода.
Какой стак-трейс. Если заинлайнили, то фреймы на стеке тоже другие будут. О чем же и речь.
Виртуальные методы никого не ебут, т.как разработчик все-равно не видит в редакторе таблицу виртуальных методов. Там как раз очень удобно инлайнить. А вот цикл - хуй, нужно с ним очень аккуратно, построчно, чтобы инфа оставалась, чтобы можно было найти откуда она пришла. В Лиспе цикл - это одна форма, т.е. по аналгии с Явой - это как если бы в Яве цикл всегда писался в одну строчку.
И что?
>Телл ас моар.
Хотелось бы услышать моар про инструкции "специально для Явы"?
- чревато ошибками
- на определенном этапе становится не выгодно, т.как имеенно изза нее не оправываются затраты на инлайн.
В хорошо написанном коде - это редкость. Если код сделан так что частью его нормальной работы являются исключения, грех жаловаться на его скорость.
Вся теория о проблеме инлайна основана на предположении:
>предположим, в заинлайненом коде случилась ошибка
А теперь вопрос. Нужна ли высокая скорость исполнения коду в котором постоянно случаются ошибки?
Лолшто? Как это их "очень удобно инлайнить", если они виртуальные, то бишь полиморфные?
На этапе компиляции кода практически невозможно сказать какой метод выполнится.
Но чтобы это понять нужно сначала попробовать подебажить Лисп, а еще лучше - МЛ / ОКамл, или Хаскель. Без опыта это не объяснить.
Я спрашивал совсем не это. Я спрашивал, каким образом "очень удобно" можно заинлайнить виртуальный метод?
>Но чтобы это понять нужно сначала попробовать подебажить Лисп, а еще лучше - МЛ / ОКамл, или Хаскель. Без опыта это не объяснить.
Причем тут дебаг лиспа, окамла и хаскеля?
При том, что об этом тут речь уже на протяжении десятка постов - о чем же и спрашивал. Вместо того, чтобы отвечать, не сочти за труд, прочитай уже полученые ответы.
Опять же, пиздеж :) Практически всегда можно, очень редко когда нельзя (нужно чтобы код откуда-то извне загружался или что-то такое), компиляторы Лиспа как-правило разруливают это, более того, если не могут разрулить, то, например, в том же SBCL будут предупреждения от компилятора.
Какой виртуальный метод будет вызван определяется строго в рантайме. В этом главная суть подобных методов.
Вот есть мультиметод, как заранее определить какой код будет вызван?
Но для того, чтобы это понять нужно хотя бы раз это увидеть. А для того, чтобы это увидеть, нужно хотя бы раз скомпилировать програму на языке в котором это происходит более наглядно. Например, Лисп и SBCL - и поэксперементировать с (declare (type ...)) и посмотреть, что получится.
Если сможет. А если не сможет? Если мы в коде используем полиморфизм с разными типами объектов - это ведь главная суть и польза виртуальных методов.
Ответьте на один простой вопрос - диспатч женерик методов в CLOS происходит в рантайме или в компайл-тайме?
- :compile-toplevel
- :load-toplevel
- :execute
Искать ли конкретный метод, или не искать и на каком этапе зависит от разработчика и возможности найти этот метод. Если разработчик настаивает, что нужно выбрать какой-то конкретный метод, то он может даже запороть програму и получить сегфолт потому, что был выбран неправильный метод. А может согласиться на то, что правильный метод будет найден во время компиляции / загрузки / выполнения.
>- :execute
Всё понятно.
грустный хохол
Вот вы любитель изъебнуться с терминологией. С таким подходом лисп абсолютно все проверки и расчёты будет производить в компайл-тайме - идеальный язык!
Хотя execution, то есть исполнение созвучно рантайму.
Жаба тоже компилирует в рантайме (да и не только жаба, а всё что имеет JIT), формально и даже фактически JIT тоже можно считать этапом компиляции. Компиляции байт-кода в нативный код, однако программист уже никакого участия не принимает и обратной связи с компилятором нету.
Кстати, некоторые армы умеют в аппаратное ускорение жабы. Х.з. правда, чего именно они там ускоряют, я не изучал.
Казалось бы, один и тот же язык, как жеж так то ли быстрый, то ли медленный?
Можно поподробнее какие это инструкции "специально для Явы"?
Ява абсолютна не совместима с RISC-процессорами, очевидно же.
https://itnan.ru/post.php?c=1&p=328120
Как работает в JDK 11+, не в курсе.
А до Java 5 и сахарка не было.
Весело. (относительно шести последних сообщений)
Господа! Ну вроде бы образованные люди же...
Кто хочет спамить и троллить - выбирайте тему поинтереснее, чем пи-пи-писечки. О перфомансе что-ли поспорьте, об обёртках и неприкрытых системных вызовах. Хотя бы эпиграммы пишите...
Да ну, воспринимаются два варианта - "программы" и "виста". Второй вариант отбрасываем, т.к. программы из-за мерзостной висты в бсод не падают. Все однозначно и понятно ;)
Беспозвоночную змею
И та, лишившись в миг рассудка,
На пони кинулась мою
> Целуй пипиську страуструпа
Предлагаешь ему переучиться на кресты?
Это все исключительно в пародийных целях
А кто это? Какой-то авторитет?
http://www.youtube.com/watch?v=nHYBB6VLW5c
Поставь мой юзерскрипт чтобы смотреть, кто кому отвечает и чтобы я мог спиздить твой пароль и писать всякий бред от твоего имени ;)
Тогда можно написать свой прокси сервер, который будет из http://govnokod.ru/css/style.css?v=4 вырезать
http://download.hdd.tomsk.ru/preview/sxcrzkfw.jpg
Вот так у меня ГК выглядит
А у меня комментарии все одной ширины, которая зависит только от исходной ширины поста. (где-то дядя Дефекейт показывал, как это выглядит)
+1. Глаза вытекают. Куда столько контраста?
У мну вот так: http://rghost.ru/56610551.view
А если я смотрю на чужой моник с 80-90% яркости - у меня уже минут через 10 глаза слезиться и болеть начинают :(
Читаемей же, чем белые буквы? :)
Ну да, ты прав, синие ссылки неудачно смотрятся на черном фоне. Их надо посветлее сделать, имхо.
> Черный фон тоже не айс.
Ну это дело привычки. В той же консольке годно смотрится.
Эта галочка тоже есть в моём юзерскрипте. Только она заодно и саму цифру убирает.
Поставь, поиграйся. Исходники открыты, лицензия свободная ;)
в JS полный профан
Аналогично, если чо ;) В резюме совесть не позволит вписать "знание javascript".
вообще не нужно писать то, что к должности не относится - а то еще отправят херней заниматься
Какое-нибудь sqr x = x * x покрывает как минимум 3 упомянутых языка.
А куда оно делось?
Я себе свой запилил, пока только добавил сверху индикатор комментариев на странице и копию пагинатора, чтобы каждый раз не крутить вниз.
Здорово сокращает время на поиск новых комментариев.
Эм, а я делаю так: все свежие комменты лежат в стоке. Тыкаем средней кнопкой на все новые комменты... и всё. На каждой открывшейся странице они внизу (за счет сортировки), и она уже проскроллена как раз к концу. Надо только чуть-чуть вверх покрутить, если много насрали.
У меня Ctrl+клик вручную, всё никак не автоматизирую это дело.
Чёрт, только сейчас пришла в голову мысль: можно ж по комментариям перемещаться в хронологическом порядке! Надо будет добавить в свой юзерскрипт.
Да из меня дизайнер как из медведя пианист ;) Еще, имхо, подчеркивания на ссылках мешают, привлекая лишнее внимание.
http://rghost.ru/56611951.view
P.S. Сорри за минус, я тыкал в него правой кнопкой, чтобы исследовать элемент, а он понял это как клик :(
Добро пожаловать в клуб ненависти Стертора
А за что мне его ненавидеть?
Почему в будущем времени? Ты пропустил какие тут были холивары и вайпы минусами? :)
А сейчас стертор очень даже адекватен и спокоен.
Да без проблем :) Въебал минус.
Из параллельной вселенной.
Что за доктор? Хаус?
Тырса.
Наверное, Who
Аааа! Я Догадался! Ты посмотрел пять сезонов доктора Айболита!
Все что меня касается...
Я так и не придумал, что же делать, если я случайно перезагружу страницу с непрочитанными новыми комментариями или кто-то понапишет новых комментариев, пока я пишу свой.
Да, новые комменты всегда внизу, а при наведении на >>237623 всплывает окошко с соотв. комментом (как на бордах). Ради этого скрипт и мутился (ну и ради лулзов в духе "все анонимы").
https://ideone.com/1g4aEK
У кого есть возможность, проверьте в новых JRE.
Почему атрибут скопировался с поля "theUnsafe" в поле "cache"?