Почему O(1) проигрывает O(n): структуры данных в Go на реальном железе
Объясню структуры данных через очередь в поликлинике, а потом покажу, где эта аналогия ломается: почему связный список с «вставкой за O(1)» в прикладном Go обычно проигрывает обычному массиву.Спойлер: асимптотика здесь не ошибается. Ошибается вывод, который мы из неё делаем.Статья для тех, кто асимптотику знает, но не проверял её замером.ОчередьСидишь в очереди к врачу. Номерка нет, ты знаешь одно: за кем занимать.Это связный список. У элемента ссылка на следующего, и больше ничего:type patient struct { name string next *patient // «а я за вами» }
6-7. Целая прорва связных списков, чтобы выучить Rust: Небезопасный двусвязный дек продуктового уровня
Наконец, мы добрались. Мой величайший враг: std::collections::LinkedList, двусвязный дек.Который я безуспешно пыталась уничтожить.Наша история начинается в 2014 году, когда мы стремительно приближались к выпуску Rust 1.0, первой стабильной версии Rust. Я была ответственна за std::collections или, как мы тогда называли эту библиотеку, libcollections.
JavaScript: структуры данных и алгоритмы. Часть 11
Привет, друзья! В этой серии статей мы разбираем структуры данных и алгоритмы, представленные в этом замечательном репозитории. Это одиннадцатая часть серии. Сегодня мы рассмотрим несколько простых, но интересных алгоритмов машинного обучения, а также один весьма любопытный статистический алгоритм. Код, представленный в этой и других статьях серии, можно найти в этом репозитории. Интересно? Тогда прошу под кат.
Моё обстоятельственное столкновение с алгоритмами, ставшее возможностью в прокачке хард-скиллов
Программисты часто ставят перед собой множество дилемм, в частности, вопрос о прогрессивности стека технологий. Вот и я, находясь на позиции «junior», столкнулся с необходимостью оптимизации кода – и после частого откладывания этого вопроса на потом мне всё же пришлось поднять его снова. Сегодня я бы хотел поделиться своим опытом на эту тему.Как я пришёл к этомуПри работе над продакшн-разработкой и написании пет-проектов я часто задумывался о лаконичности и унификации кода и архитектуры, а также об оптимизации их производительности.

