|
475 / 294 / 29
Регистрация: 01.06.2018
Сообщений: 3,676
|
||||||
Как правильно делать множественную проверку?04.12.2018, 06:40. Показов 2376. Ответов 34
Метки нет (Все метки)
Вопрос к знатокам C#. По результатам анализа того, какие данные меняются более активно я сделал множественную проверку вот таким образом:
Я не стал делать всё через && потому что тогда мы неизбежно будем делать 28 проверок, хотя в среднем, из-за особенностей заполнения массива их будет не более 10-12. Могу сделать массив последовательным, от 0 до 27, заполнив по частоте, если вдруг этого потребует какая-то компактная реализация. Спасибо.
0
|
||||||
| 04.12.2018, 06:40 | |
|
Ответы с готовыми решениями:
34
Как правильно делать проверку Как правильней делать проверку ввода Опрос. Как лучше делать проверку корректности ввода? |
|
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,575
|
|
| 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,575
|
||
| 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
Как правильно сделать проверку на результат запроса Как правильно записать проверку ввода символа Как правильно отправить на проверку программу на АСМП?
Расходящиеся ряды или как правильно задать проверку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|