Доброго времени суток. В данной статье я предлагаю ознакомиться с индексаторами в различных типах. Посмотрим код языка ассемблера для данных индексаторов и характеристики каждой инструкций по ее скорости. Также я предложу несколько очевидных выводов. Но что именно использовать в конкретно вашей ситуации решать вам — стоит ли жертвовать удобством ради скорости или наоборот.
Рубрика «benchmark» - 2
Индексаторы в C# под капотом: индексируем лучше Доу-Джонса
2019-05-13 в 7:01, admin, рубрики: .net, assembly, benchmark, C#, высокая производительность, индексатор, производительностьРезультаты бенчмарка сетевых плагинов Kubernetes (CNI) по сети 10 Гбит-с (обновлено: апрель 2019)
2019-04-19 в 10:34, admin, рубрики: benchmark, CNI, devops, kubernetes, networking, Блог компании Southbridge, Серверное администрирование, системное администрирование
Это обновление моего предыдущего бенчмарка, который теперь работает на Kubernetes 1.14 с актуальной версией CNI на апрель 2019 года.
Во-первых, хочу поблагодарить команду Cilium: ребята помогли мне проверить и исправить скрипты мониторинга метрик.
Что изменилось с ноября 2018
Вот что изменилось с тех пор (если интересно):
Flannel остается самым быстрым и простым интерфейсом CNI, но все еще не поддерживает сетевые политики и шифрование.
Romana больше не поддерживается, так что мы удалили ее из бенчмарка.
WeaveNet теперь поддерживает сетевые политики для Ingress и Egress! Но производительность снизилась.
В Calico все еще нужно вручную настраивать максимальный размер пакета (MTU) для лучшей производительности. Calico предлагает два варианта установки CNI, так что можно обойтись без отдельного хранилища ETCD:
Бенчмарк как основание для принятия решения об изменении кода
2019-02-01 в 10:51, admin, рубрики: benchmark, Go, tutorialБилл Кеннеди в одной из лекций своего замечательного курса Ultimate Go programming сказал:
Многие разработчики стремятся оптимизировать свой код. Они берут строчку и переписывают ее, говоря, что так станет быстрее. Нужно остановиться. Говорить, что тот или иной код быстрее, можно только после того, как он отпрофилирован и сделаны бенчмарки. Гадание не является правильным подходом к написанию кода.
Мне давно хотелось на практическом примере продемонстрировать, как это может работать. И на днях мое внимание привлек следующий код, который как раз можно было бы использовать в качестве такого примера:
Читать полностью »
Самые быстрые числа с плавающей запятой на диком западе
2018-10-01 в 23:19, admin, рубрики: arbitrary-precision, benchmark, double-double, float expansion, javascript, Алгоритмы, Видеокарты, высокая производительностьВ процессе реализации одной «считалки» возникла проблема с повышенной точностью вычислений. Расчетный алгоритм работал быстро на стандартных числах с плавающей запятой, но когда подключались библиотеки для точных вычислений, все начинало дико тормозить. В этой статье будут рассмотрены алгоритмы расширения чисел с плавающей запятой с помощью мультикомпонентного подхода, благодаря которому удалось достичь ускорения, так как float арифметика реализована на кристалле цп. Данный подход будет полезен для более точного вычисления численной производной, обращение матриц, обрезке полигонов или других геометрических задач. Так возможна эмуляции 64bit float на видеокартах, которые их не поддерживают.
В Go нет синтаксиса для определения необязательных аргументов в функциях, поэтому приходится использовать обходные пути. Я знаю 2:
- Передавать структуру, содержащую все необязательные аргументы в полях:
funcStructOpts(Opts{p1: 1, p2: 2, p8: 8, p9: 9, p10: 10})
- Способ предложенный Робом Пайком с использованием функциональных аргументов:
funcWithOpts(WithP1(1), WithP2(2), WithP8(8), WithP9(9), WithP10(10))
Второй способ в принципе делает тоже самое, но с синтаксическим сахаром. Мне не давала покоя мысль, а сколько же стоит этот сахар, кому ещё интересно прошу под кат.
Читать полностью »
Go быстрее Rust, Mail.Ru Group сделала замеры
2017-09-19 в 20:11, admin, рубрики: benchmark, Go, Rust, rust is faster than go, высокая производительность, Программирование, Тестирование веб-сервисовС такой фразой мне кинули ссылку на статью компании Mail.Ru Group от 2015 «Как выбрать язык программирования?». Если кратко, они сравнили производительность Go, Rust, Scala и Node.js. За первое место боролись Go и Rust, но Go победил.
Как написал автор статьи gobwas (здесь и далее орфография сохранена):
Эти тесты показывают, как ведут себя голые серверы, без «прочих нюансов» которые зависят от рук программистов.
К моему большому сожалению, тесты не были эквивалентными, ошибка всего лишь в 1 строчке кода поставила под сомнение объективность и вывод статьи.
Читать полностью »
Зачем мне твои неизменяемые коллекции? Они же медленные
2017-07-05 в 8:26, admin, рубрики: benchmark, gradle, immutable, java, jmh, kotlin, scala, Блог компании ИНФОРИОН, больше тегов богу тегов, графики, иммутабельность, коллекцииБывает так, что когда человек начинает писать на Kotlin, Scala или %language_name%
, он делает манипуляции с коллекциями так, как привык, как “удобно”, как “понятнее” или даже “как быстрее”. При этом, разумеется, используются циклы и изменяемые коллекции вместо функций высшего порядка (таких как filter
, map
, fold
и др.) и неизменяемых коллекций.
Эта статья — попытка убедить ортодоксов, что использование “этой вашей функциональщины” не влияет существенно на производительность. В качестве примеров использованы куски кода на Java, Scala и Kotlin, а для измерения скорости был выбран фреймворк для микробенчмаркинга JMH.
Читать полностью »
Стресс-тест команды: как сделать GPU бенчмарк и не перегреться
2017-05-11 в 8:53, admin, рубрики: 3d graphics, 3d графика и анимация, benchmark, gpu, HTC Vive, Oculus Rift, superposition, unigine, VR, Блог компании UNIGINE, высокая производительность, разработка игр, Разработка под AR и VRПривет! Мы вернулись в блог с историей про свежий релиз. Команда UNIGINE в апреле выпустила новый GPU-бенчмарк Superposition с VR фичами. Мы набили новых шишек, изобрели пару десятков внезапных спасительных решений и новую технологию в 3D-графике.
Внутри поста много красивого рендера, несколько драм с техническим уклоном, 4,5 художника, злые модераторы Valve, расстроенные AMD, NVIDIA и Intel и коммиты из операционной. Заходите!
Заинтересовавшись вопросом скорости работы операций упаковки и распаковки в .NET решил опубликовать свои небольшие и крайне субъективные наблюдения и измерения по этой теме.
Код примера доступен на github, поэтому приглашаю всех желающих сообщить о своих результатах измерений в комментариях.
Библиотека Google Benchmark
2017-04-05 в 10:12, admin, рубрики: benchmark, c++, google benchmark library, microbenchmarks, wunder fund, wunderfund, Блог компании Wunder Fund, высокая производительность, Программирование, метки: google benchmark library, microbenchmarks
Не так давно я писал о C++ библиотеках для микробенчмаркинга. Я рассказал о трех библиотеках: Nonius, Hayai и Celero. Но в действительности я хотел поговорить о четвертой. Мой Windows тогда не поддерживал Google Benchmark library, так что я не мог ее протестировать. К счастью, из комментариев к прошлому посту я узнал, что теперь библиотека доступна в Visual Studio!
Давайте посмотрим, как можно ее использовать.
Читать полностью »