Это очень распространено на рынках расходных материалов, таких как картриджи для принтеров. Злоумышленники создают чип, который повторяет интерфейсы и функционал оригинального, с целью продажи «совместимого» чипа.
Не знаю как у вас, производителей принтеров, но в остальном мире этих людей "злоумышленниками" никто не считает.
Восстанавливающих электронику "злоумышленниками" тоже считают в основном конторы типа Apple.
Как и ожидалось, при вычислении числа π в один поток количество ядер никак не помогает. Тем не менее, при компиляции больших проектов ситуация изменяется.
Я правильно понимаю, что вы компилировали под архитектуру хоста? То есть, у вас бенчмаркались разные задачи.
"Цель предстоящей недели — минимизировать контакты между людьми в рамках санитарно-эпидемиологических превентивных мер, а не прекратить процесс образования, процесс обучения и так далее. И те, кто до этого уже начал работу в удаленном формате, или обучение в режиме телеконференции, — продолжение этого будет приветствоваться", — заявил Песков.
Представитель администрации президента разъяснил, что в Кремле исходят из того, что "те, кто работал до сих пор на удаленке, будут продолжать работать, как и работали, на следующей неделе". "Речь не идет о выходных или праздничных днях в классическом понимании этого слова. Этот режим нерабочих дней введен для того, чтобы снизить контакты по максимуму, контакты между людьми", — подчеркнул он.
Вы точно в курсе, как работает Ажура и местная система оплаты? Или ничего кроме "VPS 2 гигабайта RAM за $1!" никогда в жизни не видели?
На Azure единственная гарантия, что виртуалку вам дадут — это то, что она уже запущена. Если вы хотите сэкономить и не платить — можете выключить (и тогда деньги не списываются), но потом может получиться так, что придётся ждать своей очереди на включение обратно, т. к. они не выделяют мощностей больше чем есть.
Оверселлинг — это когда на одном физическом хосте VPS-ок запущено больше, чем на нём есть для них памяти. Соответственно, когда эту память всё же пытаются использовать, всё это дело улетает в своп и начинает тормозить.
Ажура оверселлингом не занимается, но может дать отказ в создании или запуске виртуальной машины, если под неё нет свободного физического сервера.
В риме лучше заказывать сразу много как юрлицо/ИП и забирать самовывозом. Иначе ждать будете ну очень долго, это всё-таки оптовая компания, а не интернет-магазин.
Когда у них был на складе 18-го числа, в наличии было много чего, включая десятки ящиков с противогазами.
по Парето 80/20: только 20% кода требуют оптимизации, которые принесут 80% производительности.
В случае с бездумным использованием LINQ на ряде проектов это просто не работает. В профайлере видна картина, когда нет конкретного места, которое тормозит. И это очень и очень дорого потом исправлять.
Меньше чем на последующие выяснения и исправления "а какого хрена у нас система на 100 пользователях проводит 99% времени в blocking GC". Пушто в профайлере мы увидим так называемую смерть от тысячи порезов, когда аллоцирует и притормаживает вообще всё.
Но если вы на проект пришли на год, а потом сбежите на следующую работу, то можно и не "оптимизировать", да.
Да, но паттерн-матчинг — это совсем не про функциональную парадигму, это про более удобный switch. Тормозят-то тут как раз функциональные элементы в виде функций высшего порядка (передача FizzBuzz в Select).
Т. е. в данном конкретном примере кода мы теряем на:
1) аллокация энумератора для Enumerable.Range
2) виртуальный вызов MoveNext у энумератора Enumerable.Range
3) вызов метода FizzBuzz через делегат
4) аллокация энумератора у Select
5) виртуальный вызов MoveNext у энумератора Select
6) аллокация списка в ToList
7) вызов Console.WriteLine через делегат из ToList
Эти все вещи жрут производительность. Причём не так страшно, что именно чистую производительность (тут потери могут быть мизерными), как memory traffic.
Спасибо, но нет. Аналогичный код в "классическом" исполнении не занимается лишними аллокациями и вызовами через делегаты, что даёт существенно лучшую скорость и существенно меньшую нагрузку на GC:
| Method | Mean | Error | StdDev | Gen 0 | Gen 1 | Gen 2 | Allocated |
|----------- |---------:|----------:|----------:|-------:|------:|------:|----------:|
| Normal | 1.344 us | 0.0261 us | 0.0382 us | 0.2441 | - | - | 1.5 KB |
| Functional | 2.005 us | 0.0401 us | 0.0588 us | 0.4120 | - | - | 2.55 KB |
(результаты приведены при замене Console.WriteLine на заглушку)
Фреймы надо уметь готовить. Есть методика, позволяющая фреймом наложить на форму ввода прозрачные текстовые поля с уведомлением сайта мерчанта об их фокусе и валидности. Таким образом мерчант получает возможность стилизовать всю форму самостоятельно при этом не нуждаясь в аудите PCI DSS.
У Payment Request API есть серьёзный недостаток в виде невозможности использования его через iframe, что ведёт к необходимости держать форму на сайте мерчанта (вместо того чтобы встроить виджет от процессинга).
Получаем привет в виде необходимости магазину проходить аудит PCI DSS.
Так он расплодится в неимоверных количествах и пожрет весь борщевик. Закончится борщевик, не будет яда.
Ошибка перевода, "tank" — это ещё и контейнер для жидкостей/газов.
Это очень распространено на рынках расходных материалов, таких как картриджи для принтеров. Злоумышленники создают чип, который повторяет интерфейсы и функционал оригинального, с целью продажи «совместимого» чипа.
Не знаю как у вас, производителей принтеров, но в остальном мире этих людей "злоумышленниками" никто не считает.
Восстанавливающих электронику "злоумышленниками" тоже считают в основном конторы типа Apple.
Кому надо шли на битбакет и хранили там.
Я правильно понимаю, что вы компилировали под архитектуру хоста? То есть, у вас бенчмаркались разные задачи.
Песков.
https://tass.ru/ekonomika/8097635
Вы точно в курсе, как работает Ажура и местная система оплаты? Или ничего кроме "VPS 2 гигабайта RAM за $1!" никогда в жизни не видели?
На Azure единственная гарантия, что виртуалку вам дадут — это то, что она уже запущена. Если вы хотите сэкономить и не платить — можете выключить (и тогда деньги не списываются), но потом может получиться так, что придётся ждать своей очереди на включение обратно, т. к. они не выделяют мощностей больше чем есть.
Оверселлинг — это когда на одном физическом хосте VPS-ок запущено больше, чем на нём есть для них памяти. Соответственно, когда эту память всё же пытаются использовать, всё это дело улетает в своп и начинает тормозить.
Ажура оверселлингом не занимается, но может дать отказ в создании или запуске виртуальной машины, если под неё нет свободного физического сервера.
В риме лучше заказывать сразу много как юрлицо/ИП и забирать самовывозом. Иначе ждать будете ну очень долго, это всё-таки оптовая компания, а не интернет-магазин.
Когда у них был на складе 18-го числа, в наличии было много чего, включая десятки ящиков с противогазами.
Ну просто почему-то выходит, что компиляторы все плохие, апологеты все хорошие, а код в итоге всё равно тормозит.
О, классический аргумент апологетов ФП: "это не наш код тормозит, это компилятор плохой".
В случае с бездумным использованием LINQ на ряде проектов это просто не работает. В профайлере видна картина, когда нет конкретного места, которое тормозит. И это очень и очень дорого потом исправлять.
Меньше чем на последующие выяснения и исправления "а какого хрена у нас система на 100 пользователях проводит 99% времени в blocking GC". Пушто в профайлере мы увидим так называемую смерть от тысячи порезов, когда аллоцирует и притормаживает вообще всё.
Но если вы на проект пришли на год, а потом сбежите на следующую работу, то можно и не "оптимизировать", да.
После замены
ToList.ForEach
на рукописныйForEach<T>
:Чтобы красиво и функционально вызвать у
List<T>
функцию высшего порядкаForEach
.Да, но паттерн-матчинг — это совсем не про функциональную парадигму, это про более удобный switch. Тормозят-то тут как раз функциональные элементы в виде функций высшего порядка (передача FizzBuzz в Select).
Т. е. в данном конкретном примере кода мы теряем на:
1) аллокация энумератора для Enumerable.Range
2) виртуальный вызов MoveNext у энумератора Enumerable.Range
3) вызов метода FizzBuzz через делегат
4) аллокация энумератора у Select
5) виртуальный вызов MoveNext у энумератора Select
6) аллокация списка в ToList
7) вызов Console.WriteLine через делегат из ToList
Эти все вещи жрут производительность. Причём не так страшно, что именно чистую производительность (тут потери могут быть мизерными), как memory traffic.
Спасибо, но нет. Аналогичный код в "классическом" исполнении не занимается лишними аллокациями и вызовами через делегаты, что даёт существенно лучшую скорость и существенно меньшую нагрузку на GC:
(результаты приведены при замене Console.WriteLine на заглушку)
Фреймы надо уметь готовить. Есть методика, позволяющая фреймом наложить на форму ввода прозрачные текстовые поля с уведомлением сайта мерчанта об их фокусе и валидности. Таким образом мерчант получает возможность стилизовать всю форму самостоятельно при этом не нуждаясь в аудите PCI DSS.
У Payment Request API есть серьёзный недостаток в виде невозможности использования его через iframe, что ведёт к необходимости держать форму на сайте мерчанта (вместо того чтобы встроить виджет от процессинга).
Получаем привет в виде необходимости магазину проходить аудит PCI DSS.