|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||
Как правильно делать множественную проверку?04.12.2018, 06:40. Показов 2519. Ответов 34
Метки нет (Все метки)
Вопрос к знатокам C#. По результатам анализа того, какие данные меняются более активно я сделал множественную проверку вот таким образом:
Я не стал делать всё через && потому что тогда мы неизбежно будем делать 28 проверок, хотя в среднем, из-за особенностей заполнения массива их будет не более 10-12. Могу сделать массив последовательным, от 0 до 27, заполнив по частоте, если вдруг этого потребует какая-то компактная реализация. Спасибо.
0
|
||||||
| 04.12.2018, 06:40 | |
|
Ответы с готовыми решениями:
34
Как правильно делать проверку Как правильней делать проверку ввода Опрос. Как лучше делать проверку корректности ввода? |
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
||||||
| 18.12.2018, 14:24 | ||||||
|
belalugoci, еще как вариант можно ускорить (до 8х) используя SIMD .Net. (поставить пакет System.Numerics.Vectors от microsoft) .
0
|
||||||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 18.12.2018, 15:37 | |
|
0
|
|
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||||
| 19.12.2018, 05:22 [ТС] | |||||||||
|
Потому что число проверок с каждой итерацией вырастает на 1, поэтому до 10% добегает за 20 секунд, а с 90 до 100 идёт минут 15.
0
|
|||||||||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 19.12.2018, 11:39 | |
|
belalugoci, Подозреваю, что код UnsafeFast тоже был "улучшен" с вашей стороны.
Вчера у вас был ulong[] сегодня опять byte[,]...
0
|
|
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||||||
| 19.12.2018, 12:06 [ТС] | |||||||||||
|
Добавлено через 13 минут Вот как это выглядит у меня:
еще вопрос, мне биты считать надо и вроде есть аппаратное решение popcnt, но как его использовать так и не разобрался.
0
|
|||||||||||
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
|||||||
| 19.12.2018, 12:40 | |||||||
|
Для х64 пректа.
0
|
|||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|
| 19.12.2018, 12:50 [ТС] | |
|
0
|
|
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
||||||
| 19.12.2018, 13:23 | ||||||
|
Пример библиотеки на c++. (popcnt\x64\Release\popcnt.dll) закинуть в папку приложения с#.
Проект обязательно собирать как х64. Запускать так
1
|
||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||||||||||||||||||||||
| 20.12.2018, 11:40 [ТС] | ||||||||||||||||||||||||||||
Добавлено через 3 часа 15 минут
В общем сейчас добился что оба варианта работают 34,5-35,5 минут, но эффекта он unsafe fast нет. Возможно нужен большой массив чтобы эффект наблюдался.
0
|
||||||||||||||||||||||||||||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
||
| 20.12.2018, 17:37 | ||
if ((length1 & 4) != 0), if ((length1 & 2) != 0), if ((length1 & 1) != 0) содержат больше операций чем обычная проверка всех байтов по очереди.А обычный RowsEqualUnsafe пробовали?
0
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||||||||||||
| 21.12.2018, 06:56 [ТС] | |||||||||||||||||
|
Кстати и нет эффекта от popcnt. upd: вернул цикл и кое что косметически подправил с вариантом простого цикла, стабильно 33 минуты вместо 34-37.
Добавлено через 8 минут Я правильно думаю что вариант
0
|
|||||||||||||||||
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
||
| 21.12.2018, 09:44 | ||
|
0
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||||||||||
| 24.12.2018, 10:09 [ТС] | ||||||||||||||||
|
Как ни странно, но вариант с цепочкой
Добавлено через 5 часов 3 минуты интересно, добавил одну строку
0
|
||||||||||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|
| 25.12.2018, 04:59 [ТС] | |
|
сравнил работу проекта на Core i5-2400 и Core 2 Quad Q9300, разница по производительности 35 минут и 75 минут, но разница в частоте 3,1 ГГц и 2,5ГГц, если свести к 3,1 старичка Q9300 то он будет считать 60 минут. Смотрим на cpuboss.com и видим, что разница в производительности практически в 2 раза - печалька, я, если честно, думал разрыв будет куда серьезнее.
i5 сделан в 1 квартал 11 года, а Q9300 - 1 квартал 8 года. И тут уже не всё так печально, за 3 года производительность CPU увеличилась в 2 раза, а когда сравниваешь i5 2400 и i5 6600 произведенный еще через 3 года, то разница всего 20%.
0
|
|
| 25.12.2018, 05:20 | ||
|
Не по теме:
0
|
||
| 25.12.2018, 05:20 | |
|
Как правильно сделать проверку на результат запроса Как правильно записать проверку ввода символа Как правильно отправить на проверку программу на АСМП?
Расходящиеся ряды или как правильно задать проверку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|