Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
c#: Что производительнее - много OR или массив с Contains?
|
|||
|---|---|---|---|
|
#18+
Сразу пример Код: plaintext 1. или Код: plaintext 1. С учётом высокой нагруженности (сайт). Что произволительнее в данном случае или, может быть, лучше спросить, что "хуже"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 17:54 |
|
||
|
c#: Что производительнее - много OR или массив с Contains?
|
|||
|---|---|---|---|
|
#18+
mrArray, Лучше так Код: plaintext 1. А вообще условие конечно быстрее, т.к. там нет выделения памяти а кол. сравнений то же самое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 17:59 |
|
||
|
c#: Что производительнее - много OR или массив с Contains?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskymrArray, Лучше так [src cpp] a >= 1 && a <=200 хаха. Так то пример синтетический, реальные значения разные :) Про выделение памяти тоже подумал. Может есть ещё какое-то мнение на этот счет? (just in case) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 18:01 |
|
||
|
c#: Что производительнее - много OR или массив с Contains?
|
|||
|---|---|---|---|
|
#18+
mrArrayСразу пример Код: plaintext 1. или Код: plaintext 1. С учётом высокой нагруженности (сайт). Что произволительнее в данном случае или, может быть, лучше спросить, что "хуже"? Пофигу. Ты разницу не заметишь. Особенно на сайте. Это наносекунды, а сайт работает в масштабе десятков милисекунд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 18:49 |
|
||
|
c#: Что производительнее - много OR или массив с Contains?
|
|||
|---|---|---|---|
|
#18+
mrArrayПро выделение памяти тоже подумал. Ну, память-то можно и не выделять, можно поумнее написать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 18:50 |
|
||
|
c#: Что производительнее - много OR или массив с Contains?
|
|||
|---|---|---|---|
|
#18+
mrArrayAnatoly MoskovskymrArray, Лучше так [src cpp] a >= 1 && a <=200 хаха. Так то пример синтетический, реальные значения разные :) Про выделение памяти тоже подумал. Может есть ещё какое-то мнение на этот счет? (just in case) Насколько разные? Упорядочены или нет? Если упорядочены, воспользуйтесь бинарным поиском ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2016, 23:51 |
|
||
|
c#: Что производительнее - много OR или массив с Contains?
|
|||
|---|---|---|---|
|
#18+
mrArrayСразу пример Код: plaintext 1. или Код: plaintext 1. С учётом высокой нагруженности (сайт). Что произволительнее в данном случае или, может быть, лучше спросить, что "хуже"? Одинаково. Их теоретическая произволительность строго одного одного порядка. Для входного потока размера n с равномерным распределением значений и числа сравнений m среднее число сравнений (время последовательной работы) будет порядка (n*m/2) . Практическая (коэффициент при произведении) зависит как от мозгов компилятора, так и особенностей платформы. То что вчера, скомпилированное компилятором версии nml работало быстрее на железке xyz, завтра может оказаться медленнее на железке xyw, будучи сделанным компилятором версии nmk и наоборот. Кроме того, произволительность обоих становится не интересной, если а) n "достаточно большое" и б) есть возможность свести ситуацию по общему числу сравнений до n*log(m) или n Если константы 1, ..., 200 известны на этапе компиляции, то сделать это можно для обоих вариантов - используя switch/goto или двоичный/интерполяционный поиск в массиве. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2016, 01:31 |
|
||
|
c#: Что производительнее - много OR или массив с Contains?
|
|||
|---|---|---|---|
|
#18+
SashaMercurymrArrayпропущено... хаха. Так то пример синтетический, реальные значения разные :) Про выделение памяти тоже подумал. Может есть ещё какое-то мнение на этот счет? (just in case) Насколько разные? Упорядочены или нет? Если упорядочены, воспользуйтесь бинарным поиском Если там массив в 100-200 элементов, то может и не особо нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2016, 13:04 |
|
||
|
c#: Что производительнее - много OR или массив с Contains?
|
|||
|---|---|---|---|
|
#18+
mrArray Код: plaintext 1. Сколько тут операций зависит от того чему равно a. Например при a = 2 будет выполнено только a == 1 || a == 2, остальная часть условия не будет проверяться. mrArray Код: plaintext 1. если массив постоянный, то лучше его отсортировать один раз и заменить Contains() на Array.BinarySearch() ИМХУ с BinarySearch() будет чуть быстрее первого варианта. Можно биткарту сделать, если диапазон значений небольшой, 8 значений на байт, например 0...10000 займет 1250 байт. Заполняешь BitArray() проверка так Код: c# 1. это быстрее всего будет работать, но при большом диапазоне будет много памяти занимать. Если диапазон меньше 6400, то память даже сэкономишь по сравнению с массивом int[200]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2016, 13:42 |
|
||
|
c#: Что производительнее - много OR или массив с Contains?
|
|||
|---|---|---|---|
|
#18+
При определённом размере массива быстрее всего будет HashSet<T>, но и обычная цепочка OR тоже имеет свои преимущества. Она проста и не генерит никакого dependency-кода. Тоесть лаконична. А для сложных структур данных нужно доказывать их потокобезопасность и реакцию на неблагоприятные наборы данных (например известная атака на хешфункцию). И не забыть их инстанциировать 1 раз а не на каждый "чих". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2016, 22:42 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=31&tid=2018334]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
8ms |
check topic access: |
8ms |
track hit: |
56ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 282ms |
| total: | 443ms |

| 0 / 0 |
