|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||
Добавить к коду подсчет яркостей22.09.2020, 09:49. Показов 7888. Ответов 124
Метки нет (Все метки)
Хочу расширить код подсчитывая количество значений яркости dithPixel например в виде структуры [Value, Count], но не могу вспомнить как это сделать через хеши (именованные массивы).
0
|
||||||
| 22.09.2020, 09:49 | |
|
Ответы с готовыми решениями:
124
Добавить к коду подсчет вызовов функции Подсчёт суммы значений в ячейках по столбцу по коду товара Добавить комментарии к коду |
|
Модератор
|
|||||||
| 30.09.2020, 13:45 | |||||||
|
Вот полный Code Behind. Метод режет заданное количество точек. В примере исходное изображение и его срезы по 25%, 50% и 75% количества точек. Форма адаптивная - размеры рисунком подстраиваются под изменения размеров формы.
0
|
|||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|
| 30.09.2020, 13:58 [ТС] | |
|
0
|
|
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
||
| 30.09.2020, 15:51 | ||
|
Вот выкладываю исправленный вариант и еще 3 других варианта в тестовом проекте с бенчмарком. Варианты GetBrightnessSafe и GetBrightnessV4 (ваш последний с моим исправлением) выдают примерно одинаковую скорость (у меня ~40мс), но всё равно уступают почти в 2 раза варианту с unsafe доступом к массиву (~20мс).
1
|
||
|
Модератор
|
|||
| 30.09.2020, 17:31 | |||
![]() Только если я там где-то ошибся, но там надо тогда искать логику в ошибке. У каждой задачи свой диапазон массива и они никак не перекрешиваются. От синхронизации (в данном случае) только доп задержки будут. Я обработал пару рисунков - судя по эффектам работает правильно. Добавлено через 2 минуты И у меня не получается нормально протестировать - старый комп.
0
|
|||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
|||||||||||||
| 30.09.2020, 17:32 | |||||||||||||
1
|
|||||||||||||
|
Модератор
|
|||
| 30.09.2020, 17:36 | |||
|
Чтобы случайно не захватить локальные переменные. Добавлено через 2 минуты Вы правы. Я эту часть не доделал когда с локального метода убирал. Но там не синхронизация нужна. Сейчас занят часа через три исправлю и скину другой варинат.
0
|
|||
|
Модератор
|
||||||
| 30.09.2020, 20:51 | ||||||
|
belalugoci, исправил указанную Someone007 ошибку в логике и добавил комментариев:
0
|
||||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
||
| 01.10.2020, 01:13 | ||
|
Результаты тестов: .NET Framework 4.8 x64 (x86 работает медленнее, и он включен по умолчанию, обязательно отключить) GetBrightnessSafe 28 мс GetBrightnessUnsafe 21 мс GetBrightnessV4 30 мс GetBrightnessST 412 мс .NET Core 3.1 x64 GetBrightnessSafe 27 мс GetBrightnessUnsafe 20 мс GetBrightnessV4 28 мс GetBrightnessST 293 мс (тут у .NET Core неплохой выигрыш почему-то) Видно что Parallel.For (используется в GetBrightnessSafe и GetBrightnessUnsafe) отлично справляется с распределением задачи на несколько потоков автоматически и нет никакой необходимости делать это вручную как сделал Элд Хасп. Да и само API довольно удобное и гибкое.
0
|
||
|
Модератор
|
||||||||
| 01.10.2020, 08:04 | ||||||||
|
У меня первый вариант (не помню выкладывал здесь или нет) был с отдельной задачей для каждой строки. Он был в 2-2,5 раза быстрее чем синхронный. Потом решил проверить как влияет количество потоков (прочитав пост от Usaga). Уменьшил до 25 - скорость увеличилась в два раза. Потом уменьшил до 10 - такая же как при 25. Но возможно, эти результаты только для старых компов. Вариант с задачей для каждой строки, по коду значительно проще. belalugoci, если у него скорость такая же на вашем компе то надо его использовать. Добавлено через 12 минут
Просуммировать массив int[511] - это уже не миллисекунды, а микро. Даже для моего компа. В конечном варианте вы исправили массив countsTotal на int[511]? Блокировка оказала бы (возможно) влияние, если бы внутри каждой строки результат сразу накапливался в data.countsTotal без использования буфера data.countsLocal.
0
|
||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||||
| 01.10.2020, 08:09 [ТС] | |||||||||
|
железо i3-4170, 4G RAM ОС 32-bit Win7 Кликните здесь для просмотра всего текста
Версия Core у меня не запускается, просит переключиться на preview, но где именно я не найду (MS очень сложно предложить переключить сразу или открыть окно где это можно сделать).
0
|
|||||||||
|
Модератор
|
|||
| 01.10.2020, 08:20 | |||
|
Добавлено через 4 минуты
0
|
|||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||
| 01.10.2020, 08:33 [ТС] | |||
|
У меня дома ноутбук i5-2520M, ПК i5-3570, собранные совсем недавно.
0
|
|||
|
Модератор
|
||||||||
| 01.10.2020, 08:56 | ||||||||
|
Я к тому, что если на моём компе код работал иначе чем у Someone007, то на вашем тоже будет так же. И методы реализации надо выбирать оптимальные под ваш комп. Добавлено через 2 минуты Поменять в нём надо только Form1 на название вашей формы. Это в строке
Размер формы роли не играет. И она должна быть пустая.
0
|
||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||
| 01.10.2020, 09:04 [ТС] | ||||||||
|
Код в целом работает очень быстро, заметно быстрее того, что было раньше. Еще несколько методов нужно добавить. Пока вижу это как преобразование BrightnesData исходя из потребности. Номером один идёт наложение матрицы шума (dithering), для универсальности файл с шумом лучше передавать как параметр например Bitmap.Типа такого:
Примеры шума во вложении.
0
|
||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||||||||
| 01.10.2020, 10:20 [ТС] | ||||||||||||||
|
Добавлено через 1 час 1 минуту
0
|
||||||||||||||
|
Модератор
|
|||||
| 01.10.2020, 10:52 | |||||
|
На одном один быстрее работает, на другом - другой. Добавлено через 1 минуту У меня же так и сделано. Матрица яркости создаётся один раз. А потом в метод среза уже передаётся она, а не исходная картинка. Добавлено через 37 секунд Только обратите внимание: Матрица яркости в истинных единицах - это целое число от 0 до 510. Добавлено через 2 минуты Добавлено через 2 минуты Хочу сравнить с моим компом.
0
|
|||||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,576
|
|||||
| 01.10.2020, 12:13 | |||||
|
Вот у вас получились средние значения:
0
|
|||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||
| 01.10.2020, 13:17 [ТС] | |||||||
0.2013975 0.0010291 0.0048779 0.1903822 Это значение sw.Elapsed.ToString()
1
|
|||||||
| 01.10.2020, 13:17 | |
|
Добавить комментарии к коду
Добавить к коду многоадресный делегат К готовому коду добавить процедуру К коду добавить вывод в консоль Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки.
Добавлены следующие реквизиты типа Булево:
- Буквы;
- Цифры;
- Символы.
Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
|
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей.
Самым главным критерием для. . .
|
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store.
И так:
1. Скачиваем с. . .
|