Pull to refresh
28
0
Алексей @Priest512

Java-разработчик

Send message
Ну про лямбды все верно — есть поддержка на всех API. Но как по моему мнению, это синтаксический сахар и немного другой вопрос. А вот теперь SDK Android поддерживает java.util.stream, java.lang.FunctionalInterface, где следом плавно вытекают, как Вы и отметили, java.util.function. Если раньше Stream (до 24 версии API) имели поддержку в виде отдельных библиотек, то сейчас они полноценные члены API Android. Что, смею предположить, благоприятно скажется на качестве конечного кода и, собственно, его работе. Поправьте, если где-то не прав. :)
Большое Вам спасибо за разъяснение! С английским туго, учил немецкий, приходится изучать на ходу все :)
Ну как я понимаю это предложение, то тут подразумевается SMR — safe memory reclamation (отложенное физическое удаление) для решения проблем ABA-проблем? Поэтому использование «эффективное хранение семантики» не уместно? Или я что-то не так до конца понял?
Ага, подкорректировал) Насчет изменений, хотел по идее оставить по протоколу MESI изменения, которые происходят, но в целом Ваш вариант мне понравился. Спасибо
Ммм, понял Вас, своими словами в целом будет лучше.
Придерживаюсь вашего мнения, к сожалению среди знакомых нет людей с хорошим опытом перевода, чтобы корректировать недочеты. Поэтому, если есть возможность, прошу оказать мне помощь в столь деликатном деле))
Вы имеете введу внести больше ясности в терминологию — про snoop-base, про MESI и прочее?
Я согласен с Вами в том, что алгоритм, который стоит на FAA и отдельно взятый FAA не будут давать ну очень схожие результаты. По поводу конкретики, ждите после праздников как доберусь до рабочего места и сообщу Вам о результатах, потому как когда я готовил эту статью, я старался делать больше упор на общих вопросах и целью было донести разницу реализаций 7 и 8 версии и пытаться показать на очень простых примерах.
В целом на тот момент у меня производительность кода зависела как раз от FAA реализации. Это была часть системы (которую я сам полностью и писал) и для этой части у меня как раз был написан простой тест, который тупо отправлял данные в большом количестве и потом же забирал одновременно. По поводу измерений, в целом, возможно Вы и правы, но картина будет схожей, только пиковые значений выше. Но как появится возможность, я все же гляну на результаты на серверной машине ради интереса
На автомате, но спасибо) учту
Да, на 4-х ядерной машине (с физическими и 8 виртуальными) наблюдалась схожая картина
CounterMonitor или LinkedBlockingQueue, например, использует FAA в своей реализации. Это в исходниках самой Java. Затем, да, вы совершенно правы, физически у меня 2 ядра на машине)). Однако, на своем опыте замечал, что результат от перехода есть, когда тестил один и тот же код в в своей программе на разных версиях JDK, когда изменения счетчика происходили с частотой 100-200 раз за секунду и испытания проводились на серверном процессоре, результат был в целом хороший. Конечно, там было не так много потоков (2-3), соревнующихся между собой, однако профит все же был.
В 7 версии у нас используется цикл для атомарной установки нового значения переменной. Исходя из этого — в случае большой нагрузки и высокой конкурентности потоков мы будем ловить branch mispredict — ошибочное предсказание ветвления, который приводит, например, к перезагрузке конвейера процессора и всяким дополнительным издержкам, вроде out-of-order. В 8 версии мы полностью лишены цикла и всех связанных с ним издержек во время работы, таким образом получаем профит от использования новой версии и в моем понимании, все операции (то есть уже написанный код или системы), которые имеют атомарные операции с данными будут работать быстрее в каком-то определенном числе сценариев использования. Например, потокобезопасные коллекции иметь более высокую производительность. В моем понимании я вижу это так)) Поправьте, если я не так Вас понял)
В рамках реализации Java они делают к примеру, атомарные операции инкрементирования. Причем в разных версиях 7 и 8 соответственно используется CAS и FAA. То есть один и тот же код на разных версиях будет иметь разную производительность.
Мм, интересно Ваше мнение. А где можно поподробнее почитать?
Мм, интересно Ваше мнение. А где можно поподробнее почитать
Ну да, целью было показать то, чем языки похожи. Я уже когда читал документацию, заметил много общего с C#. Насчет различий, надо бы понять, какие они))
на Java 8 не работал в силу того, что у всех клиентов 7 версия стоит)) однако, киньте ссылочку, полезно будет почитать.
Хмм, а во про природу тасков не знал. У Алекса Дэвиса этого не видел, когда читал его книгу про асинхронное программирование)) спасибо

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity