|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||
Как правильно делать множественную проверку?04.12.2018, 06:40. Показов 2444. Ответов 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 | |
|
Как правильно сделать проверку на результат запроса Как правильно записать проверку ввода символа Как правильно отправить на проверку программу на АСМП?
Расходящиеся ряды или как правильно задать проверку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Грибы - это женщины, деревья - это мужчины. Анти инь янь для союза мужчины и женщины.
anaschu 18.07.2026
ГЛАВНЫЙ НАУЧНО-ФИЛОСОФСКИЙ ВЫВОД: Сексуально-Репродуктивный Капитализм против Государства Моногамии
Коллеги, мы вышли на финишную прямую 20-мерного ОДУ-моделирования вековой сукцессии (ветка. . .
|
Текстовый слайдер с нумерацией страниц и кроссбраузерность.
russiannick 18.07.2026
Один мой друг написал текстовый слайдер с нумерацией страниц. Сегодня я расскажу как он умудрился подружить его с кроссбраузерностью.
Очевидно сложно угодить с шириной каждому браузеру. Один крадет. . .
|
Грибы - это мемы, дерево - это человек. Применение микоризной модели к теории меметики Докинза.
anaschu 18.07.2026
Меметический изоморфизм теории «всего»: Грибная сукцессия как модель эволюции идей Докинза
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а универсальную. . .
|
Грибы - это корпорации, деревья - это государства. Механизм массонского захвата власти
anaschu 18.07.2026
Макроэкономический изоморфизм теории «всего»: Грибная сукцессия как модель транснационального капитализма
Базовый код системы ОДУ микоризной сукцессии описывает не просто биологию, а. . .
|
|
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости.
Решение:
Создан документ со следующими. . .
|
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово.
Решение:
Создан документ с единственным. . .
|
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Вычислить сумму и количество положительных элементов массива, расположенных в четных строках.
Решение:
Создан документ с. . .
|
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности.
. . .
|