Как стать автором
Обновить
20
0
Odobenus Rosmarus @OdobenusRosmarus

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

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

Семь видов интерпретаторов виртуальной машины. В поисках самого быстрого

Время на прочтение35 мин
Количество просмотров32K
Все проблемы в области Computer Science могут быть решены введением дополнительного уровня косвенности. За исключением одной: слишком большого числа уровней косвенности.
All problems in computer science can be solved by another level of indirection, except for the problem of too many layers of indirection.

Программные интерпретаторы известны своей невысокой скоростью работы. В этой статье я расскажу, как их можно ускорить.
Я давно уже хотел поподробней остановиться на создании интерпретаторов. Прямо таки обещал, в том числе самому себе. Однако серьёзный подход требовал использования более-менее реалистичного кода для примеров, а также проведения измерений производительности, подтверждающих (а иногда и опровергающих) мои аргументы. Но наконец-то я готов представить почтенной публике результаты, причём даже чуть более интересные, чем собирался.
В данной статье будет описано семь способов построения программной ВМ для одной гостевой системы. От самых медленных мы проследуем к более быстрым, поочерёдно избавляясь от различных «неэффективностей» в коде, и в конце сравним их работу на примере одной программы.
Тех, кто не боится ассемблерных листингов, испещрённого макросами кода на Си, обильно удобренного адресной арифметикой, goto и даже longjmp, а также программ, использующих копипаст во имя скорости или даже создающих куски самих себя, прошу пожаловать под кат.
Читать дальше →
Всего голосов 47: ↑47 и ↓0+47
Комментарии48

Один в поле не воин: как создать отказоустойчивый кластер

Время на прочтение5 мин
Количество просмотров37K
Часто случается, что после запуска какого-нибудь амбициозного интернет проекта и удачного его пиара в СМИ компания ожидает большой приток посетителей. К сожалению, наш мир не идеален и так случается, что сайт не справляется с таким потоком посетителей, называемым в наших кругах «хабраэффектом», и начинает тормозить. Соответственно компания теряет и деньги и репутацию. В таких случаях программисты обычно сваливают вину на админов, а админы на программистов. Получается замкнутый круг.

imageЧто же делать, если ваше приложение стало тормозить? Одним из способов является перевод его в кластерную архитектуру. К сожалению, есть не так много инструкций и статей, которые подскажут, как это сделать. Поэтому мы решили опубликовать небольшой пример того, как можно создать отказоустойчивый кластер на базе GlassFish. Этот процесс и многое другое автоматизировано в Jelastic, но если Вы по каким-либо причинам не можете перейти на облачный хостинг, то эта статья именно для Вас.
Читать дальше →
Всего голосов 19: ↑18 и ↓1+17
Комментарии6

CSS кнопки с помощью псевдо-элементов

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


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

В этом уроке я покажу как создать кнопку с изюминкой, используя только якорный тег и мощь CSS.

Читать дальше →
Всего голосов 238: ↑230 и ↓8+222
Комментарии117

Оптимизация Ubuntu (и прочих Linux-ов) под SSD

Время на прочтение4 мин
Количество просмотров205K
Доброго времени суток всем читающим. В данной мини-статье мне хотелось бы собрать и рассмотреть основные моменты оптимизации работы (и, конечно, продления жизненного цикла ) твердотельных накопителей. Практически всю информацию можно легко найти в сети, но тут я попытаюсь упомянуть пару подводных камней.
Читать дальше →
Всего голосов 128: ↑118 и ↓10+108
Комментарии109

Обзор NoSQL систем

Время на прочтение5 мин
Количество просмотров55K
Беспрецедентные объемы данных заставляют разработчиков и бизнес приглядываться к альтернативам реляционных баз данных, используемым вот уже более тридцати лет. В совокупности все эти технологии известны как «NoSQL базы данных».


Основной проблемой является то, что реляционные базы данных не могут справляться с нагрузками актуальными в наше время (мы говорим о high-load проектах). Есть три конкретные проблемных области:
  • горизонтальное масштабирование при больших объемах данных, например как в случае Digg (3 терабайта для зеленых значков, отображаемых, если ваш друг сделал dugg на статье) или Facebook (50 терабайт для поиска по входящим сообщениям) или eBay (2 петабайта в целом)
  • производительность каждого отдельного сервера
  • не гибкий дизайн логической структуры.
Читать дальше →
Всего голосов 101: ↑98 и ↓3+95
Комментарии67

LLVM изнутри: как это работает

Время на прочтение10 мин
Количество просмотров27K
Приветствую хабраюзеров, в этой статье пойдет речь о внутреннем устройстве компилятора LLVM. О том, что LLVM вообще такое, можно прочитать здесь или на llvm.org. Как известно, LLVM (условно) состоит из трех частей — байткода, стратегии компиляции и окружения aka LLVM infrastructure. Я рассмотрю последнее.

Содержание:
  • Сборка LLVM
  • Привязка к Eclipse
  • Архитектура окружения
  • LLVM API
  • Оптимизация Hello, World!
Читать дальше →
Всего голосов 59: ↑54 и ↓5+49
Комментарии18

Электровелосипед своими руками

Время на прочтение5 мин
Количество просмотров377K
Тема электротранспорта меня интересовала всегда.
И вот наступил долгожданный момент, когда я от теории наконец перешел к практике. О своём опыте я поведаю ниже.

Пара мыслей в качестве вступления.
Почему именно сейчас так активно заговорили про электромобили, электросамолёты, электробайки? Наконец почти разрешилась основная проблема электротранспорта — начали появляться достаточно компактные и емкие батареи. Более того, они заряжаются за терпимое время. Собственно только этого и ждали, все остальное давно создано и «обкатано» — кузов, ходовая часть, электроника, электромоторы. Все это уже используется сотню лет. А электромоторы позволяют использовать непривычные решения — к примеру устанавливать себя в ступицы самих колес.

К делу!

Технические характеристики:

— велосипед обычный, средней ушатанности, цена примерно 200$
— электромотор на 48V и мощность 380W
— батарея на 48V и 10A
— скорость без помощи педалей по ровной дороге 35-40 км/ч
— дальность поездки 22-25 км по легкой холмистой местности и в городе
— время полного заряда 2 часа

image

Надо отметить, что переоборудование не сильно бросается в глаза и большинство людей на улице просто не замечают ничего необычного в велосипеде.
Читать дальше →
Всего голосов 459: ↑454 и ↓5+449
Комментарии316

MySQL Performance real life Tips and Tricks. Part 3-rd.

Время на прочтение14 мин
Количество просмотров23K
Решил продолжить цикл заметок по данной тематике. В данной статье особое место хотел уделить профайлингу MySQL запросов. Описать средства, которые предоставляются MySQL для профайлинга, и что нужно делать для определения узких мест запроса.

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

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

MySQL Performance real life Tips and Tricks. To be continued.

Время на прочтение6 мин
Количество просмотров8K
По заявкам трудящихся решил написать еще одну статью, посвященную оптимизации запросов в MySQL.

В прошлой статье habrahabr.ru/blogs/mysql/38907 рассматривались вопросы оптимизации LIMIT, GROUP BY, COUNT.

В данной статье я немного вернусь к вышеописанному и опишу пару примеров, с которыми столкнулся на проекте недавно, после этого приведу еще пару небольших примеров относительно того что такое хорошо и что такое плохо в MySQL.
Читать дальше →
Всего голосов 84: ↑80 и ↓4+76
Комментарии65

Информация

В рейтинге
Не участвует
Откуда
Queensland, Австралия
Дата рождения
Зарегистрирован
Активность