Рубрика «высокая производительность» - 159

Насколько плохим код должен быть? Эрик Липперт — ветеран Microsoft, проработавший в компании 16 лет и стоящий за разработкой VBScript, JScript и C#.

На прошлой неделе в комментариях к одной из статей разгорелся спор о роли низкоуровневой оптимизации в программировании, и я вспомнил относящуюся к этому статью Эрика. Она была написана в конце 2003, и хотя реалии с тех пор несколько изменились — принципы остались теми же самыми. Можете мысленно заменить ASP и VBScript на PHP, JavaScript, или на другой скриптовый язык по вашему вкусу.

Эту статью я уже пытался перевести в 2005, но русский текст тогда получился неуклюжий, так что этот перевод — новый и ранее не публиковался, в соответствии с требованиями НЛО. В Переводе блога Эрика Липперта этого текста тоже нет — наверное, для них он слишком стар.


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

Например, за семь лет в Microsoft я получил десятки вопросов, аналогичных по своей сути этому, заданному в конце 1990-х:

У нас есть код на VBScript, и в одной часто вызываемой функции мы определяем оператором Dim несколько переменных, которые нигде в функции не используются. Не замедляется ли каждый вызов функции из-за объявления этих переменных?

Какой интересный вопрос! В компилируемом языке, таком как Си, объявление локальных переменных общим размером n байт всего лишь вычитает n из указателя стека при входе в функцию. Если n будет чуть больше или чуть меньше, затраты времени на вычитание никак не изменятся. Наверное, в VBScript точно так же? Оказалось, что нет! Вот что я написал автору вопроса:
Читать полностью »

Первые версии микроядра L4 были настолько малы, что могли целиком поместится в кэше современных процессоров. Вероятно, этот факт породил миф о микроядре L4: «Оно быстрое, потому что маленькое». Даже в настоящее время нередко можно услышать эту версию. Так можно ли разместить микроядро в процессоре и как это сделать?
Читать полностью »

Дата центр Mega еле справляется с нагрузкойВчера около 22:00 по московскому времени криптохостинг Mega открылся для всех желающих. С первых минут на него хлынул поток пользователей. «Я никогда не видел ничего подобного, — пишет Ким Дотком, — с нуля до 10 Гбит/с заполнение канала за десять минут».

В первый же час на сайте зарегистрировалось более 100 тыс. пользователей. «Самый успешный стартап в истории интернета?», — пошутил Ким Дотком на этот счёт в твиттере. Через два часа после запуска сайт достиг отметки в 250 тыс. зарегистрированных пользователей. Сейчас он работает с перебоями. Даже если вы сможете на него зайти, то закачать файлы туда затруднительно.

В любом случае, запуск проекта можно признать успешным. Ким Дотком проснулся три часа назад — и сразу организовал пресс-конференцию. Смотреть её в прямом эфире можно прямо сейчас.
Читать полностью »

BCache — это продвинутая система кэширования доступа к SATA дискам на дисках SSD на блочном уровне. Существуют два режима кэширования — writethrough (данные пишутся на основной диск и кэшируются на SSD только для последующего чтения) и writeback (данные пишутся сначала на SSD, а далее синхронизируются с основным носителем). Второй режим немного опаснее в плане потери данных и видимо предназначен для использования совместно с отказоустойчивой системой из SSD носителей. Подробная документация доступна в дереве исходных текстов.
Читать полностью »

Эх, ухнем!
Принцип параллельного проведения расчетов – один из тех, что буквально «витают в воздухе». И это естественно, ведь любую работу удобней выполнять сообща. Параллельные вычисления появились задолго до первой ЭВМ, однако идея расцвела именно в компьютерную эпоху, ведь именно тогда появились и задачи, требующие большой вычислительной мощности, и устройства, готовые «всем миром» эту мощность предоставить. В эти дни исполняется ровно 15 лет с моего первого знакомства с проектами распределенных вычислений – хороший повод, чтобы написать об их истории и сегодняшнем дне.
Читать полностью »

Эх, ухнем! Распределенные вычисления вчера и сегодня
Принцип параллельного проведения расчетов – один из тех, что буквально «витают в воздухе». И это естественно, ведь любую работу удобней выполнять сообща. Параллельные вычисления появились задолго до первой ЭВМ, однако идея расцвела именно в компьютерную эпоху, ведь именно тогда появились и задачи, требующие большой вычислительной мощности, и устройства, готовые «всем миром» эту мощность предоставить. В эти дни исполняется ровно 15 лет с моего первого знакомства с проектами распределенных вычислений – хороший повод, чтобы написать об их истории и сегодняшнем дне.
Читать полностью »

performanceЯ поделюсь 30 практиками для достижения максимальной производительности приложений, которые этого требуют. Затем, я расскажу, как применил их для коммерческого продукта и добился небывалых результатов!
Приложение было написано на C# для платформы Windows, работающее с Microsoft SQL Server. Никаких профайлеров – содержание основывается на понимании работы различных технологий, поэтому многие топики пригодятся для других платформ и языков программирования.
Читать полностью »

Здравствуйте. Хотелось бы поделиться опытом автоматизации процесса печати большого количества документов из Adobe Photoshop.
Задача состоит в следующем:
имеется большое количество (в моем случае — 100 000 шт.) уже напечатанных документов. Необходимо на них в определенных местах определенным шрифтом напечатать их порядковый номер в заданном формате (или любую строку, сформированную по определенному алгоритму).
Чтобы было более понятно, приведу пример.
Читать полностью »

2013: пора прекратить погоню за флопсамиОт переводчика: Exascale computing — это такой амбициозный проект по достижению производительности порядка ExaFLOPS к 2018 году. Есть мнение, что наукоемким вычислениям уже сейчас тесно в петафлопсах. Так ли это на самом деле? Размышления на эту тему Уильяма Гроппа, директора Parallel Computing Institute, были опубликованы в The Exascale Report.

2013: TIME TO STOP TALKING ABOUT EXASCALE
William D. Gropp

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

Nvidia представила Tegra 4

От CES 2013 и специалисты, и просто любители гаджетов и технологий ожидают очень многого. И действительно, на этой выставке часто анонсируются такие технологии и устройства, которые еще недавно считались фантастикой. В общем-то, CES 2013 начала оправдывать ожидания, еще практически не начавшись. К примеру, компания Nvidia представила платформу Tegra 4, сделав это в «нулевой день» выставки. Можно думать, что эта платформа вскоре перекочует в новые модели мобильных устройств, включая планшеты и смартфоны.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js