Как стать автором
Обновить
1
0

Пользователь

Отправить сообщение

Другой взгляд на многопоточность

Время на прочтение 7 мин
Количество просмотров 22K

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

Читать далее
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 26

Какой предел у предсказателя ветвлений? Проверили на x86 и M1

Время на прочтение 13 мин
Количество просмотров 35K

Некоторое время назад я смотрел на высоконагруженную часть кода и обратил внимание на это:

if (debug) {
    log("...");
}

И тут я задумался. Это — часть цикла, от которого требуется высокая производительность, но этот фрагмент выглядит как пустая трата времени, ведь мы никогда не устанавливаем флаг отладки. Нормально ли иметь в коде условные операторы, которые никогда не выполняются? Уверен, это влияет на производительность программы…
Читать дальше →
Всего голосов 153: ↑151 и ↓2 +149
Комментарии 91

4K страницы: навсегда, на веки вечные

Время на прочтение 11 мин
Количество просмотров 11K

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

Но, "для нас нет ничего святого"(С), попробуем выяснить почему именно 4К, изменится ли что-то если сделать 8К, 64К... Зачем вообще фиксировать конкретный размер, почему не сделать страницы произвольной (в пределах разумного) длины.

Читать далее
Всего голосов 42: ↑42 и ↓0 +42
Комментарии 15

Да ты гонишь! Почему на одних конфигурациях оперативка разгоняется выше, чем на других

Время на прочтение 10 мин
Количество просмотров 33K


Разгон памяти, дело добровольное. Как понять, от чего зависит разгон памяти, какие есть тонкости в подборе комплектующих и как «прогнать» память, чтобы было за нее не стыдно!
Изучение, анализ и подбор – три составляющих успеха в разгоне памяти. Чтобы начать разгонять память без погружения в пучины технических знаний, необязательно быть специалистом. Половина успеха зависит от платформы, вторая часть – это правильный выбор ранговости, количество модулей и частот памяти Kingston и HyperX.
Всего голосов 25: ↑25 и ↓0 +25
Комментарии 38

Исключительно быстрая валидация UTF-8

Время на прочтение 4 мин
Количество просмотров 9.1K
Текстовая строка — один из самых распространённых «типов данных» в программировании. Когда программисты думают о строке, то представляют список или массив символов. Это «достаточно хорошее» приближение, но реальность сложнее.

Символы должны быть каким-то образом закодированы в биты. Большинство строк в интернете, включая этот пост на Хабре, закодированы в UTF-8. Формат UTF-8 представляет «символы» в одном, двух, трёх или четырёх байтах. Это обобщение для стандарта ASCII, использующего только один байт на символ. То есть строка ASCII также является строкой UTF-8.

На самом деле всё немного сложнее, потому что технически UTF-8 описывает кодовые точки. Видимый символ типа эмодзи может состоять из нескольких кодовых точек… но большинству программистов эти педантичные формулировки не нужны.
Читать дальше →
Всего голосов 27: ↑27 и ↓0 +27
Комментарии 47

Оптимизация C++: совмещаем скорость и высокий уровень. Доклад Яндекса

Время на прочтение 9 мин
Количество просмотров 23K
Что влияет на скорость работы программ на C++ и как её добиться при высоком уровне кода? Ведущий разработчик библиотеки CatBoost Евгений Петров ответил на эти вопросы на примерах и иллюстрациях из опыта работы над CatBoost для x86_64.

Видео доклада

— Всем привет. Я занимаюсь оптимизацией для CPU библиотеки машинного обучения CatBoost. Основная часть нашей библиотеки написана на C++. Сегодня расскажу, какими простыми способами мы добиваемся скорости.


Читать дальше →
Всего голосов 54: ↑53 и ↓1 +52
Комментарии 16

[Подборка] Полезные статьи о релокации в США: выбор визы, поиск работы, зарплаты и налоги

Время на прочтение 2 мин
Количество просмотров 15K

Одна из самых популярных тем в нашем блоге – релокация. А самым популярным направлением для переезда русскоговорящих инженеров остаются США. Это легко объяснимо – в этой стране наиболее развита IT-отрасль, FAANG, тысячи стартапов, передовые технологии и вот это все.

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

Читать далее
Всего голосов 19: ↑13 и ↓6 +7
Комментарии 1

Разбираемся в моделях кода архитектуры x64

Время на прочтение 19 мин
Количество просмотров 10K
«Какой моделью кода мне воспользоваться?» — часто возникающий, но нечасто разбираемый вопрос при написании кода для архитектуры х64. Тем не менее, это довольно интересная проблема, и для понимания генерируемого компиляторами машинного кода х64 полезно иметь представление о моделях кода. Кроме того, для тех, кто беспокоится о производительности вплоть до мельчайших команд, выбор модели кода влияет и на оптимизацию.

Информация по этой теме в сети, или где бы то ни было еще, встречается редко. Самым важным из доступных ресурсов является официальный х64 ABI, скачать его можно по ссылке (далее по тексту он будет упоминаться как «ABI»). Часть информации также можно найти на man-страницах gcc. Задача данной статьи — предоставить доступные рекомендации по теме, обсудить связанные с ней вопросы, а так же хорошими примерами через используемый в работе код продемонстрировать некоторые концепты.

Важное замечание: эта статья не является обучающим материалом для начинающих. Перед ознакомлением рекомендуется уверенное владение C и ассемблером, а так же базовое знакомство с архитектурой х64.
Читать дальше →
Всего голосов 27: ↑25 и ↓2 +23
Комментарии 2

Запятая в английском языке: 5 правил и топ-3 ошибки

Время на прочтение 6 мин
Количество просмотров 42K
Носитель английского языка практически всегда знает, что текст писал иностранец. Даже если в тексте нет ни одной ошибки в словах и конструкции предложений.

Как? Ответ прост: пунктуация.

Студенты, которые учат английский как иностранный часто пропускают тему, как правильно ставить запятые. Она ведь интуитивно понятная, что тут учить! Так-то оно так, но не совсем.

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


Читать дальше →
Всего голосов 41: ↑41 и ↓0 +41
Комментарии 33

Создание сайта с помощью C++

Время на прочтение 7 мин
Количество просмотров 49K

Возможно ли это?


Да.

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

Будет не только интересно, но также полезно и очень практично.
Читать дальше →
Всего голосов 31: ↑22 и ↓9 +13
Комментарии 38

Как работает Android, часть 1

Время на прочтение 8 мин
Количество просмотров 214K


В этой серии статей я расскажу о внутреннем устройстве Android  —  о процессе загрузки, о содержимом файловой системы, о Binder и Android Runtime, о том, из чего состоят, как устанавливаются, запускаются, работают и взаимодействуют между собой приложения, об Android Framework, и о том, как в Android обеспечивается безопасность.

Читать дальше →
Всего голосов 92: ↑91 и ↓1 +90
Комментарии 50

Нейросеть для разработчиков C++

Время на прочтение 7 мин
Количество просмотров 49K
Всем привет.

Написал библиотеку для обучения нейронной сети. Кому интересно, прошу.
Читать дальше →
Всего голосов 54: ↑51 и ↓3 +48
Комментарии 30

Learn OpenGL. Урок 6.1. PBR или Физически-корректный рендеринг. Теория

Время на прочтение 21 мин
Количество просмотров 33K
OGL3

Физически-корректный рендеринг


PBR, или физически-корректный рендеринг (physically-based rendering) это набор техник визуализации, в основе которых лежит теория, довольно хорошо согласующаяся с реальной теорией распространения света. Поскольку целью PBR является физически достоверная имитация света, он выглядит гораздо более реалистичным по сравнению с использованными нами ранее моделями освещения Фонга и Блинна-Фонга. Он не только лучше выглядит, но и дает неплохое приближение к реальной физике, что позволяет нам (и в частности художникам) создавать материалы, основанные на физических свойствах поверхностей, не прибегая к дешевым трюкам дабы заставить освещение выглядеть реалистично. Главным преимуществом такого подхода является то, что создаваемые нами материалы будут выглядеть как задумано независимо от условий освещения, чего нельзя сказать о других, не PBR подходах.

Читать дальше →
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 13

Мой любимый алгоритм: нахождение медианы за линейное время

Время на прочтение 7 мин
Количество просмотров 93K
image

Нахождение медианы списка может казаться тривиальной задачей, но её выполнение за линейное время требует серьёзного подхода. В этом посте я расскажу об одном из самых любимых мной алгоритмов — нахождении медианы списка за детерминированное линейное время с помощью медианы медиан. Хотя доказательство того, что этот алгоритм выполняется за линейное время, довольно сложно, сам пост будет понятен и читателям с начальным уровнем знаний об анализе алгоритмов.
Читать дальше →
Всего голосов 46: ↑45 и ↓1 +44
Комментарии 40

Хитрый владелец Model S майнит криптовалюту на станциях бесплатной подзарядки Tesla

Время на прочтение 3 мин
Количество просмотров 61K

Майнерская мини-ферма спрятана в багажнике Tesla

Самый ценный ресурс, необходимый для добычи криптовалюты — это электричество. На генерацию монет уже тратится электроэнергии больше, чем потребляет такая страна как Ирландия (и 19 других стран Евросоюза). Это 0,13% мирового энергопотребления стоимостью полтора миллиарда долларов в год — ну а что делать, глобальная финансовая система требует соответствующей инфраструктуры.

В данный момент годовое потребление сети Bitcoin оценивается в 30,25 ТВт·ч. Так, за вчерашний день в плавильной печи «цифрового золота» сгорело 82,86 ГВт·ч. На единственную транзакцию уходит 275 кВт·ч, чего достаточно для суточного электроснабжения девяти больших частных коттеджей.



Ну в общем вы поняли идею. Для проведения транзакций и генерации биткоинов нужно электричество. Много электричества.
Читать дальше →
Всего голосов 38: ↑28 и ↓10 +18
Комментарии 51

Решаем задачу нахождения длины наибольшей возрастающей подпоследовательности

Время на прочтение 7 мин
Количество просмотров 56K

Содержание:

Последовательность Фибоначчи O (n)
Решение за O(n ^ 2)
Бинарный поиск O(log n)
Решение за O(n * log n)


Задача


"Найти длину самой большой возрастающей подпоследовательности в массиве."


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


На пальцах


Есть последовательность:


5, 10, 6, 12, 3, 24, 7, 8


Вот примеры подпоследовательностей:


10, 3, 8
5, 6, 3


А вот примеры возрастающих подпоследовательностей:


5, 6, 7, 8
3, 7, 8


А вот примеры возрастающих подпоследовательностей наибольшей длины:


5, 6, 12, 24
5, 6, 7, 8

Читать дальше →
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 12

RNN: может ли нейронная сеть писать как Лев Толстой? (Спойлер: нет)

Время на прочтение 16 мин
Количество просмотров 26K
При изучении технологий Deep Learning я столкнулся с нехваткой относительно простых примеров, на которых можно относительно легко потренироваться и двигаться дальше.

В данном примере мы построим рекуррентную нейронную сеть, которая получив на вход текст романа Толстого «Анна Каренина», будет генерировать свой текст, чем-то напоминающий оригинал, предсказывая, какой должен быть следующий символ.

Структуру изложения я старался делать такой, чтобы можно было повторить все шаги новичку, даже не понимая в деталях, что именно происходит внутри этой сети. Профессионалы Deep Learning скорее всего не найдут тут ничего интересного, а тех, кто только изучает эти технологии, прошу под кат.
Читать дальше →
Всего голосов 34: ↑33 и ↓1 +32
Комментарии 35

Задачи планирования и программирование в ограничениях

Время на прочтение 8 мин
Количество просмотров 24K
Когда у тебя в запасе много популярных инструментов вроде JAVA, Python, Ruby, PHP, C#, C++ и других, чувствуешь себя почти всемогущим. Стандартный подход в разработке рулит. Но только до тех пор, пока не столкнешься с определенным типом задач.

 
Подумайте, как правильно написать программу, которая оптимально…

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

image
Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 5

UB-2017. Часть 1

Время на прочтение 14 мин
Количество просмотров 9.4K
От переводчика:
Переводы статьи про неопределённое поведение в языке C от Криса Латтнера, одного из ведущих разработчиков проекта LLVM, вызвали большой интерес, и даже некоторое непонимание со стороны тех, кто не встречался с описываемыми явлениями на практике. В своей статье Крис даёт ссылку на блог Джона Реджера, и на его статью от 2010 года, посвящённую UB в C и C++. Но в блоге Реджера есть и гораздо более новые статьи на эту тему (что не отменяет ценность старых, однако).

Я хочу предложить вашему вниманию свежую статью «Undefined Behavior in 2017». Статья в оригинале имеет очень большой объём, и я разбил её на части.

В первой части речь пойдёт о разных инструментах поиска UB: ASan, UBSan, TSan и т.д.
ASan — Address Sanitizer от компании Google, разработанный на основе LLVM.
UBSan — Undefined Behavior Sanitizer, предназначен для обнаружения различных UB в программах на C и C++, доступен для Clang и GCC.
TSan — Thread Sanitizer, предназначен для обнаружения UB в многопоточных программах.
Если вам эта тема покажется далёкой от практики, я рекомендую дождаться продолжения, потому что в конце вас ждёт поистине огромный список UB языка С++ (их должно быть около 200!)
И я рекомендую прочитать также старые статьи Реджера, они не утратили актуальности.
Об авторе: Джон Реджер является профессором Computer Science в университете штата Юта в США.


Мы часто слышим, что некоторые люди утверждают, что проблемы, вытекающие из неопределённого поведения (UB) в C и C++ в основном решены путём широкого распространения инструментов динамической проверки, таких, как ASan, UBSan, MSan и TSan. Мы здесь покажем очевидное: несмотря на то, что в последние годы произошло множество прекрасных улучшений в этих инструментах, проблемы UB далеки от разрешения, и рассмотрим ситуацию в деталях.


Читать дальше →
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 0

Бестиарий С++. Справочник по загадочным персонажам

Время на прочтение 9 мин
Количество просмотров 33K


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

Читать дальше →
Всего голосов 56: ↑55 и ↓1 +54
Комментарии 43

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность