|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||
Как правильно делать множественную проверку?04.12.2018, 06:40. Показов 2236. Ответов 34
Метки нет (Все метки)
Вопрос к знатокам C#. По результатам анализа того, какие данные меняются более активно я сделал множественную проверку вот таким образом:
Я не стал делать всё через && потому что тогда мы неизбежно будем делать 28 проверок, хотя в среднем, из-за особенностей заполнения массива их будет не более 10-12. Могу сделать массив последовательным, от 0 до 27, заполнив по частоте, если вдруг этого потребует какая-то компактная реализация. Спасибо.
0
|
||||||
| 04.12.2018, 06:40 | |
|
Ответы с готовыми решениями:
34
Как правильно делать проверку Как правильней делать проверку ввода Опрос. Как лучше делать проверку корректности ввода? |
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,573
|
|
| 04.12.2018, 06:48 | |
|
0
|
|
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||||
| 04.12.2018, 07:32 [ТС] | ||||||||
|
Добавлено через 32 минуты сделал так:
0
|
||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|
| 05.12.2018, 13:25 [ТС] | |
|
анализируя частоту изменения данных в массиве удалось уменьшить время работы программы с 60 до 35 минут.
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
||||||
| 15.12.2018, 04:32 | ||||||
|
Unsafe сравнение будет быстрее.
0
|
||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 17.12.2018, 05:13 [ТС] | ||
|
просто по логике компилятор всё равно так или иначе будет оперировать с указателями, почему тогда явное обращение через указатели окажется быстрее?
0
|
||
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,573
|
||
| 17.12.2018, 05:31 | ||
|
0
|
||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 17.12.2018, 05:47 [ТС] | ||
|
3.40 - для unsafe 3.30 - для for+if Ни разу вариант с unsafe не был быстрее.
0
|
||
|
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
|
|||||||||||||||||
| 17.12.2018, 10:29 | |||||||||||||||||
А вообще я бы делал через циклы, как вы и сделали
0
|
|||||||||||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||
| 17.12.2018, 11:45 [ТС] | |||
В моём случае я не написал 14, а указал 10-12, так как некоторые переменные меняются чаще других, в итоге я проверки сделал исходя из этой информации, но чтобы цикл был красивым от 0 до 27, я заполняю массив так, что в 0 пишется самое частое к изменению значение, а в 27 пишется то что меняется редко. В итоге такой способ позволил мне очень сильно сэкономить, в 2 раза примерно ускорить проверку.
0
|
|||
|
176 / 124 / 49
Регистрация: 30.11.2012
Сообщений: 1,330
|
||||||||||||
| 17.12.2018, 11:58 | ||||||||||||
0
|
||||||||||||
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
||||||
| 17.12.2018, 12:51 | ||||||
|
belalugoci, Я так понимаю здесь просто проверяется равенство строк массива. Если хотите оптимизировать то можно просто считать хэши строк на лету, а потом их сравнивать.
Как то так.
0
|
||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||
| 17.12.2018, 13:00 [ТС] | |||
|
"^" - это возведение в степень? По коду - не понял что именно там делается.
0
|
|||
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
|||
| 17.12.2018, 13:04 | |||
0
|
|||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||
| 17.12.2018, 13:19 [ТС] | ||
|
0
|
||
|
95 / 74 / 27
Регистрация: 13.08.2018
Сообщений: 203
|
|
| 17.12.2018, 13:53 | |
|
belalugoci, Если не секрет данные у вас как в массив попадаю из файла ? Сравнение производится когда весь массив заполнен или после изменения одного элемента ? И что вообще эта программа делает ?
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
||||||||||||||||||||||||||||||||
| 18.12.2018, 02:42 | ||||||||||||||||||||||||||||||||
|
Конфигурация Debug (оптимизация кода отключена):
Можно еще так:
Конфигурация Debug (оптимизация кода отключена):
0
|
||||||||||||||||||||||||||||||||
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||||||||||
| 18.12.2018, 04:49 [ТС] | |||||||||||||||
0
|
|||||||||||||||
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 18.12.2018, 12:20 | |
|
belalugoci, В вашем первом примере был двухмерный массив, поэтому я тоже сделал пример для двухмерного.
В общем случае, unsafe должен быть быстрее за счет отсутствия проверок выхода за границы массива при доступе по индексу. Если размер элемента меньше чем размер регистра процессора, то выиграш еще и за счет пакетных операций (как в примере unsafe fast, byte - 1 байт, long -8 байт). Никакого хеширования тут нет.
0
|
|
|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
|||||||||||||||||||||||||||||||
| 18.12.2018, 13:56 [ТС] | |||||||||||||||||||||||||||||||
переделал свой проект под unsafe fast, запустил, обычно исполняется 35 минут, посмотрим что это даст. Добавлено через 28 минут
Код собран в варианте Release для x64. Сам Compare вызывается так
0
|
|||||||||||||||||||||||||||||||
| 18.12.2018, 13:56 | |
|
Помогаю со студенческими работами здесь
20
Как правильно сделать проверку на результат запроса Как правильно записать проверку ввода символа Как правильно отправить на проверку программу на АСМП?
Расходящиеся ряды или как правильно задать проверку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|