Pull to refresh
15.7
Karma
3
Rating
Сергей Цыпанов @tsypanov

Разработчик

Профилирование с точностью до ассемблерных инструкций

Java
Tutorial

Работая над темой низкоуровневого профилирования, я обнаружил отсутствие подробного руководства по настройке окружения и сбору материала. Всё пришлось делать самому путём проб и ошибок. Итогом стала эта статья, в которой я по шагам описал профилирование кода, горячее место в котором не в силах обнаружить не только какой-нибудь VisualVM, но и титаны вроде async-profiler-а. В качестве примера использован код из ранее упоминавшейся статьи The volatile read surprise.

Читать далее
Total votes 11: ↑11 and ↓0 +11
Views2K
Comments 2

News

Show more

Производительность: нюансы против очевидностей

Java

Приветствую, это текстовая версия моего доклада на JPoint-2021. Как обычно я сделал упор на случаи из жизни и на повседневные вещи, используемые каждым разработчиком. Под кат приглашаются интересующиеся производительностью и им сочувствующие.

Читать далее
Total votes 10: ↑10 and ↓0 +10
Views2.8K
Comments 2

Ещё больше строковых оптимизаций

ProgrammingJava

В продолжение своей предыдущей статьи о строках (напоминаю, это была текстовая версия доклада на ДжиПоинте-2020) решил дописать ещё одну заметку, куда вошли некоторые оптимизации, обнаруженные уже после вёрстки презентации.

Читать далее
Total votes 18: ↑18 and ↓0 +18
Views3.1K
Comments 6

Ах, эти строки

Java

Это текстовая версия моего доклада "Ах, эти строки" на конференции JPoint-2020.
Дабы не тратить время читателей зря, сразу расставим все точки над "ё".


О чём статья?


Статья об эффективном (или не очень) использовании строк.


Для кого статья?


Статья для разработчиков, занимающихся производительностью, и им сочувствующих.


Откуда всё это?


Что-то выловлено в коде проекта, что-то — во фреймворках и библиотеках.

Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views5.3K
Comments 5

Моя попытка номер 5

ProgrammingJava

А я пропатчил, я пропатчил SJ
Опять, опять, опять…
Ох, как намаялся я с тобой
Моя попытка номер пять.

Крутилось в голове


Это небольшой большой рассказ о попытке привнести сжатые строки в StringJoiner, а также о трудностях, вставших на моём пути. Предупреждение: внутри расчленёнка и кишки, уберите от мониторов детей и впечатлительных лиц.

Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Views3.3K
Comments 3

Вещи, которые вы [возможно] не знали о Java

Java

Приветствую, читатель!


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

Читать дальше →
Total votes 33: ↑29 and ↓4 +25
Views11.3K
Comments 38

Не все патчи одинаково полезны

ProgrammingJava

Эта заметка продолжает разбор улучшений производительности, которые могли бы стать явью, если бы не разные "но". Предыдущая часть о StringBuilder-е находится здесь.


Здесь мы рассмотрим несколько "улучшений", отклонённых из-за непонимания тонкостей спецификации языка, неочевидных угловых случаев и других причин. Поехали!

Читать дальше →
Total votes 19: ↑19 and ↓0 +19
Views3.8K
Comments 10

Вкалывают роботы — счастлив человек

ProgrammingJava
Tutorial

Позабыты хлопоты,
Остановлен бег,
Вкалывают роботы,
Счастлив человек!


Из фильма "Детство Терминатора" "Приключения Электроника"


Привет, сегодня мы снова поговорим о производительности. О производительности труда разработчиков.


Я расскажу о том, как средствами "Идеи" прокачать этот навык. Надеюсь, мои советы пригодятся вам, замечания и улучшения приветствуются. Поехали!

Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views3.9K
Comments 2

Что мы делаем не так со Спрингом

Java

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


Надеюсь, вам будет интересно, а если после прочтения вы осознаете свои "грехи" и встанете на путь исправления, то я буду доволен вдвойне. Также призываю вас поделится своими собственными примерами в комментария, наиболее любопытные и необычные добавим в запись.

Читать дальше →
Total votes 19: ↑15 and ↓4 +11
Views7.4K
Comments 81

Мины под производительностью ждут своего часа: часть 2

ProgrammingJava

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

Читать дальше →
Total votes 16: ↑15 and ↓1 +14
Views4.6K
Comments 11

Мины под производительностью ждут своего часа

ProgrammingJava

В этой статье я расскажу о минах, заложенных под производительность, а также об их обнаружении (желательно ещё до взрыва) и обезвреживании.


Картинка для привлечения внимания

image

Читать дальше →
Total votes 36: ↑34 and ↓2 +32
Views13.7K
Comments 21

Spring Data JPA: доводим напильником

Java

Приветствую, это вторая заметка о Spring Data JPA. Первая часть была целиком посвящена подводным граблям, а также советам бывалых. В этой части мы поговорим о том, как заточить фреймворк под свои нужды. Все описанные примеры доступны здесь.

Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views34.2K
Comments 6

Spring Data JPA: что такое хорошо, и что такое плохо

Java

Крошка-сын к отцу пришел
И спросила кроха
— Что такое хорошо
и что такое плохо

Владимир Маяковский


Эта статья о Spring Data JPA, а именно в подводных граблях, встретившихся на моём пути, ну и конечно же немного о производительности.

Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Views51.7K
Comments 12

На горе стоит Spring Boot…

Java

… его четверо отлаживают.


Вдохновлённый докладом Владимира Плизги (Spring Boot 2: чего не пишут в release notes) я решил рассказать о своём опыте работы со Спринг Бут, его особенностях и подводных камнях, встретившихся на моём пути.

Читать дальше →
Total votes 21: ↑19 and ↓2 +17
Views8.6K
Comments 8

Как ухудшить производительность, улучшая её

ProgrammingJava

Хотели как лучше, а получилось как всегда.
Виктор Черномырдин,
русский государственный деятель


Бывают в жизни случаи, когда ты вроде бы всё делаешь правильно, но что-то идёт не так.
Этот рассказ об одном из таких случаев.

Читать дальше →
Total votes 35: ↑35 and ↓0 +35
Views11.7K
Comments 11

Ускоряем создание ConcurrentReferenceHashMap

Java

Приветствую, в этой заметке я рассажу, как можно с незначительными усилиями ускорить создание org.springframework.util.ConcurrentReferenceHashMap.


Интересуетесь прокачиванием производительности? Добро пожаловать!

Читать дальше →
Total votes 16: ↑16 and ↓0 +16
Views3.3K
Comments 5

Мой улов за неделю

Java

Чем больше разработчик работает над приложением в команде и чем лучше знает его код, тем чаще он занимается вычиткой творчества своих товарищей. Сегодня я покажу, что может быть выловлено за одну неделю в коде, написанном весьма неплохими разработчиками. Под катом собрание ярких артефактов нашего творчества (и немного моих размышлений).

Читать дальше →
Total votes 16: ↑12 and ↓4 +8
Views8.2K
Comments 22

Загубить производительность

Java

Эта заметка является писанной версией моего доклада "Как загубить производительность с помощью неэффективного кода" с конференции JPoint 2018. Посмотреть видео и слайды можно на странице конференции. В расписании доклад отмечен обидным стаканчиком смузи, так что ничего сверхсложного не будет, это скорее для начинающих.


Предмет доклада:


  • как смотреть на код, чтобы найти в нём узкие места
  • распространённые антипаттерны
  • неочевидные грабли
  • обход граблей

В кулуарах мне указали на некоторые неточности/упущения в докладе, они здесь отмечены. Замечания также приветствуются.

Читать дальше →
Total votes 25: ↑25 and ↓0 +25
Views14.9K
Comments 12

Непридуманная история о производительности, рефлексии и java.lang.Boolean

Java

Однажды, в студёную зимнюю пору (хотя на дворе был март) мне нужно было покопаться в куче (того, что называется heap dump, а не того, о чём вы подумали). Расчехлив VisualVM я открыл нужный файл и перешел в OQL консоль. Пока суд да дело, моё внимание привлекли запросы, доступные из коробки. Особенно в глаза бросался один из них, озаглавленный "Too many Booleans". В его описании английским по белому сказано:


Check if there are more than two instances of Boolean on the heap (only Boolean.TRUE and Boolean.FALSE are necessary).

Чувствуете, да? Вот и я проникся.

Читать дальше →
Total votes 37: ↑37 and ↓0 +37
Views10.5K
Comments 20
1

Information

Rating
925-th
Registered
Activity