Pull to refresh

Как убрать все управляющие символы из строки — история одной бурной оптимизации

Reading time 8 min
Views 54K
High performance *
Получилось так, что мне довелось оптимизировать код кластерной задачи, которая входила в состав Большого Кластерного Алгоритма и занималась весьма простой вещью: входной поток из n полей нужно было в зависимости от содержимого полей переразложить в выходной поток из m полей и почти успокоиться. Почти — потому что внутри полей были строчки произвольного вида, которые нужно было «очистить» — провести простейшую, казалось бы, операцию удаления всех управляющих символов из строки.

Оказалось, что эта операция совсем не такая «простейшая», как кажется, особенно если рассматривать её в современных языках с виртуальной машиной. Чуть ниже я покажу, как можно заменить решение в одну строчку на решение в пару десятков строчек, увеличив производительность алгоритма в ~10 раз. Сразу оговорюсь, что примеры будут относится к Java, но аналогичные рассуждения будут справедливы и для большинства других языков и виртуальных машин — в первую очередь, для .NET-based.
Читать дальше →
Total votes 105: ↑103 and ↓2 +101
Comments 81

print или echo, что быстрее?

Reading time 2 min
Views 27K
PHP *
Translation
Под катом перевод довольно старого поста Фабиена (Fabien Potencier) на тему print vs echo, примечательного, на мой взгляд, методом установления «истины». В отличии от подавляющего большинства подобных исследований, в этом вы не найдете запуска скриптов с echo и print миллионы раз.
Заинтриговал?
Total votes 93: ↑56 and ↓37 +19
Comments 35

Поговорим о микрооптимизациях на примере кода Tizen

Reading time 24 min
Views 8.6K
PVS-Studio corporate blog Open source *C++ *C *Development for Tizen *

Микрооптимизации в коде

Как правило, при обсуждении диагностических возможностей PVS-Studio за кадром остаются рекомендации, выдаваемые анализатором по поводу микрооптимизаций Си и Cи++ кода. Конечно, микрооптимизации не так важны, как диагностики, выявляющие ошибки, но про них тоже интересно поговорить.
Читать дальше →
Total votes 31: ↑26 and ↓5 +21
Comments 15

Разбор перформансных задач с JBreak (часть 1)

Reading time 35 min
Views 12K
Контур corporate blog High performance *Programming *Java *Compilers *
Первая часть — разбор самой холиварной задачи из четырёх:

    void forEach(List<Integer> values, PrintStream ps) {
        values.forEach(ps::println);
    }

    void forEach(List<Integer> values, PrintStream ps) {
        values.stream().forEach(ps::println);
    }

    void forEach(List<Integer> values, PrintStream ps) {
        values.parallelStream().forEach(ps::println);
    }

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

Другие публикации серии: Часть 2, Часть 3, Часть 4.
Читать дальше →
Total votes 26: ↑25 and ↓1 +24
Comments 10

IT's Tinkoff .NET Meetup в Томске и Нижнем Новгороде

Reading time 3 min
Views 3.3K
TINKOFF corporate blog .NET *

Всем привет! Недавно мы провели два офлайн-митапа по .NET. Разработчики выступили с семью докладами — от рассказа о реальной стоимости операций под капотом платформы .NET до разбора межсервисных интеграций. Митапы прошли в Томске и Нижнем Новгороде — городах, где работают Центры разработки Тинькофф. 

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

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