Рубрика «бенчмаркинг» - 2

После прочтения "Побиваем С программой в 80 строк на Хаскеле", которую я нашел на ХакерНьюс, я решил, что D может и лучше. И я написал wc на D.

Прим.пер. Я предложил вышеупомянутую статью перевести 0xd34df00d, но он предпочел сделать по мотивам свою «Побеждая C двадцатью строками Haskell: пишем свой wc». И теперь статьи множатся как перепевы «чеканной монетой».

Программа

Состоит из одного файла — 34 строки и 712 символов.

Исходник

import std.stdio : writefln, File;
import std.algorithm : map, fold, splitter;
import std.range : walkLength;
import std.typecons : Yes;
import std.uni : byCodePoint;

struct Line {
	size_t chars;
	size_t words;
}

struct Output {
	size_t lines;
	size_t words;
	size_t chars;
}

Output combine(Output a, Line b) pure nothrow {
	return Output(a.lines + 1, a.words + b.words, a.chars + b.chars);
}

Line toLine(char[] l) pure {
	return Line(l.byCodePoint.walkLength, l.splitter.walkLength);
}

void main(string[] args) {
	auto f = File(args[1]);
	Output o = f
		.byLine(Yes.keepTerminator)
		.map!(l => toLine(l))
		.fold!(combine)(Output(0, 0, 0));

	writefln!"%u %u %u %s"(o.lines, o.words, o.chars, args[1]);
}

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

«Типичная ошибка — бездумно бенчмаркать всё подряд»: интервью с Андреем Акиньшиным о бенчмаркинге - 1

В прошлом году у Андрея Акиньшина (DreamWalker) вышла книга «Pro .NET Benchmarking»: подробнейший труд о бенчмаркинге, полезный как .NET-разработчикам, так и айтишникам других направлений.

Когда до её выхода оставалась пара месяцев, мы проводили конференцию DotNext 2019 Piter, где в онлайн-трансляции расспросили Андрея про книгу и вообще про бенчмаркинг. Казалось бы, с тех пор это интервью должно было устареть: там о книге говорят в будущем времени, а сейчас ей уже полгода. Но за эти полгода человечество не стало как-то иначе считать 99-й перцентиль — так что для всех, кому может пригодиться бенчмаркинг, в ответах Андрея по-прежнему много актуального и интересного.

А в апреле он выступит на DotNext с темой «Поговорим про перформанс-анализ» — то есть не про написание бенчмарков, а про анализ собранных ими значений. Прямо сейчас Андрей штудирует сотни статей по математической статистике, чтобы рассказать вам про те методы, которые лучше всего подходят для перфоманс-анализа в реальной жизни. В книге такому анализу тоже уделено внимание, а в интервью Андрей как раз объяснял его важность. Поэтому в ожидании нового доклада мы открыли для всех видеозапись интервью, а специально для Хабра сделали текстовую расшифровку: теперь его можно не только посмотреть, но и прочитать.
Читать полностью »

Привет, Хабр !

Работая с Javascript / Typescript, я давно заметил, что асинхронное API работает медленней чем аналогичное синхронное, и даже знал что так должно быть. Но на последнем проекте асинхронная работа с файловой системой стала узким местом, и я озаботился замерами.

Известно, что await можно использовать только внутри функций или блоков async, а это значит, что если у вас самый нижний уровень API асинхронный, то придется использовать async/await практически везде, даже там, где оно очевидно не нужно.

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

Какую цену мне приходится платить за каждый асинхронный вызов?
Результаты тестов удручают...

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

Продолжаем нашу серию материалов, посвященную тестированию производительности серверов. Сегодня поговорим о паре проверенных временем бенчмарках, которые до сих пор поддерживают и обновляют — NetPerf, HardInfo и ApacheBench.

Как протестировать производительность серверов: подборка из нескольких open source бенчмарков - 1Читать полностью »

Это — подборка утилит, составленная на основе рекомендаций резидентов Hacker News и GitHub. В список вошли: Locust, Vegeta, Slow_cooker, k6 и Siege. Ими пользуются инженеры из DICE, EA и Buoyant, а также разработчики Kubernetes и Load Impact. Расскажем об этих инструментах.

Открытые бенчмарки для нагрузочного тестирования серверов и веб-приложений - 1Читать полностью »

Продолжаем рассказывать об инструментах для оценки производительности CPU на Linux-машинах. Сегодня в материале: temci, uarch-bench, likwid, perf-tools и llvm-mca.

Больше бенчмарков:


Бенчмарки для серверов на Linux: подборка открытых инструментов - 1Читать полностью »

В прошлый раз мы рассказывали об инструментах с отрытым исходным кодом для оценки производительности процессоров и памяти. Сегодня говорим о бенчмарках для файловых систем и систем хранения данных на Linux — Interbench, Fio, Hdparm, S и Bonnie.

Как оценить производительность СХД на Linux: бенчмаркинг с помощью открытых инструментов - 1Читать полностью »

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

В список вошли утилиты, предлагаемые резидентами GitHub и участниками тематических тредов на Reddit, — Sysbench, UnixBench, Phoronix Test Suite, Vdbench и IOzone.

Бенчмарки для Linux-серверов: 5 открытых инструментов - 1Читать полностью »

Предыстория: после того, как мы с командой в прошлом году закрыли компанию и еще не начали работу над новой, мы решили обновить наш старый, но довольно большой сайт с кулинарными рецептами. Чтобы понять насколько серьезно стоит углубляться в работу над ним, я проанализировал данные по выручке сайтов, которые тоже зарабатывают на рекламе.

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

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

Добрый вечер, коллеги.

Перевод статьи, который мы вам предложим сегодня, призван помочь ответить на вопрос: а назрела ли необходимость целой книги по оптимизации кода на Java? Надеемся, что материал не только покажется вам интересным, но и пригодится на практике. Пожалуйста, не забудьте проголосовать.
Читать полностью »


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