|
Труд вопреки насмешкам
|
|
.NET 9 Приемлема ли такая реализация поиска в списке?26.04.2025, 21:41. Показов 3468. Ответов 35
Метки нет (Все метки)
Ссылка. Разумеется, не по "чистому коду", а функционально. На самом деле я мог бы сделать и "традиционную" реализацию, это не очень сложно, но это привело бы к большому количеству косвенной рекурсии, которой я стараюсь избегать, так как сильно сомневаюсь, что компилятор оптимизирует ее (на самом деле там была бы не "чистая" косвенная рекурсия, которую как раз легко оптимизировать, предварительно преобразовав в прямую, а адская комбинация из прямой и косвенной рекурсии, когда каждая функция в паре вызывает как себя, так и другую) (и такая комбинация у меня уже была, я даже ввел goto, чтобы избавиться от этой "всенаправленной" рекурсии) (а как мы знаем, мои проекты и без такой рекурсии тормозят, нет смысла добавлять еще один тормоз там, где легко обойтись без него). Также на этом месте могла бы быть вообще реализация "в лоб", которая тоже раньше была у меня, но это еще бо́льшие тормоза из-за рекурсивного спуска на каждом элементе, а не по одному разу за ветку. Надеюсь, устранив лишние спуски и эту адскую рекурсию, я не ввел других тормозов или чего-то еще похуже?
0
|
|
| 26.04.2025, 21:41 | |
|
Ответы с готовыми решениями:
35
Выбор обфускатора: сочетание бесплатности и приемлемого качества WCF метод должен вернуть приемлемый тип для dataGridView |
|
Супер-модератор
|
|
| 27.04.2025, 06:38 | |
|
Etyuhibosecyu, в этом коде "без поллитры" не разберёшься... А в чем, собственно, состоит проблема? Есть два базовых алгоритма: прямой перебор и двоичный поиск. Для двоичного поиска в списке нужно обеспечить доступ к элементу по его индексу за фиксированное время (за O(1)). В противном случае двоичный поиск теряет смысл.
0
|
|
|
Труд вопреки насмешкам
|
||||||
| 27.04.2025, 08:22 [ТС] | ||||||
|
Добавлено через 8 минут
0
|
||||||
|
14086 / 9303 / 1348
Регистрация: 21.01.2016
Сообщений: 34,926
|
|
| 27.04.2025, 09:20 | |
|
Etyuhibosecyu, вопрос бессмысленный.
Приемлемо оно или нет определяется с помощью юнит-тестов и бенчмарков. Про оба этих механизма тебе уже миллион раз говорили. Показывали как с этим работать. Но «гении» они такие - любят работать абы как и советов не понимают
1
|
|
|
Супер-модератор
|
||
| 27.04.2025, 09:42 | ||
0
|
||
|
Труд вопреки насмешкам
|
||
| 27.04.2025, 09:43 [ТС] | ||
|
0
|
||
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
|
|
| 27.04.2025, 10:39 | |
|
Etyuhibosecyu, ага, а еще этот метод в окне браузера в масштабе 50% не помещатся на один экран.
Добавлено через 3 минуты Вам уже сказали - надо самостоятельно написать бенчмарки, которые покрывают различные сценарии (fast path, slow path и прочее) и проверить.
0
|
|
|
Труд вопреки насмешкам
|
|
| 27.04.2025, 10:42 [ТС] | |
|
IamRain, да, ровно 100 строк. Я не подгонял, это случайность, которую я только сейчас обнаружил. У меня экран большой, если убрать заголовок и адресную строку (полноэкранный режим), в масштабе 100% как раз в точности помещается. Зато нет адской комбинации из прямой и косвенной рекурсии, которая вроде как приводит к тормозам, так как ее невозможно оптимизировать (это я так думаю).
0
|
|
|
14086 / 9303 / 1348
Регистрация: 21.01.2016
Сообщений: 34,926
|
||
| 27.04.2025, 10:45 | ||
|
0
|
||
|
Труд вопреки насмешкам
|
||||||
| 27.04.2025, 11:01 [ТС] | ||||||
|
Написал бенчмарк:
Даже если предположить, что "лишние" проверки при индексации отнимают половину времени (что маловероятно), у реализации по ссылке из шапки все равно остается ОГРОМНЫЙ запас преимущества в скорости.
0
|
||||||
|
Труд вопреки насмешкам
|
||||||
| 27.04.2025, 11:20 [ТС] | ||||||
|
Написал бенчмарк специально на прямую и косвенную рекурсию:
Так что, мои догадки о тормозах подтвердились.
0
|
||||||
|
Труд вопреки насмешкам
|
|
| 27.04.2025, 11:28 [ТС] | |
|
IamRain, нет никаких ошибок в этих бенчмарках?
0
|
|
|
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
|
|
| 27.04.2025, 11:56 | |
|
Etyuhibosecyu, я не знаю как работает твоя логика. Тебе скучно что-ли?
Возьми какой-нибудь опенсорс проект и поработай над ним - он тебя затянет, и будет что с кем обсуждать - сразу убьешь двух зайцев.
0
|
|
|
Труд вопреки насмешкам
|
||||||||
| 27.04.2025, 12:11 [ТС] | ||||||||
if (low != null) в отдельный метод (там уже нет рекурсии)? Или что-то еще?Добавлено через 5 минут
0
|
||||||||
|
14086 / 9303 / 1348
Регистрация: 21.01.2016
Сообщений: 34,926
|
|
| 27.04.2025, 12:16 | |
|
IamRain, так вроде бы вопрос не предполагает анализ кода его. Если я правильно понял. Это он ссылку кинул. Но сам вопрос о поведении кода. А это тестами и бенчмарками и определяется.
0
|
|
|
Труд вопреки насмешкам
|
|
| 27.04.2025, 13:32 [ТС] | |
|
sau, вы раньше помогали мне разобраться в трудночитаемом коде, в этот раз не подскажете, нет ли тут СКРЫТЫХ багов и других проблем? СКРЫТЫЕ - это такие, которые простой проверкой в стиле
Assert.AreEqual(microsoftList.IndexOf(index, length), bigList.IndexOf(index, length)) НЕ ПОКРЫВАЮТСЯ.
0
|
|
|
2773 / 2073 / 386
Регистрация: 22.07.2011
Сообщений: 7,820
|
||
| 27.04.2025, 13:41 | ||
|
- если тестами все покрыто и все работает в соответствии с ожиданиями , ну тогда не знаю , разве что на утечку памяти проверить , переполнение стека.
0
|
||
|
Труд вопреки насмешкам
|
||||
| 27.04.2025, 14:11 [ТС] | ||||
|
Добавлено через 17 минут sau, простите, только сейчас увидел ваше отредактированное сообщение. Добавлено через 11 минут sau, к слову, утечка памяти очень может быть. Через несколько минут прогона случайных операций с этими списками начинает потреблять 100 ГБ памяти и больше.
0
|
||||
|
14086 / 9303 / 1348
Регистрация: 21.01.2016
Сообщений: 34,926
|
||
| 28.04.2025, 04:07 | ||
|
0
|
||
|
Заблокирован
|
|||
| 28.04.2025, 22:36 | |||
![]() А до прогона сколько? Это что за список в котором нужно рекурсивно искать то? Добавлено через 4 минуты
0
|
|||
| 28.04.2025, 22:36 | |
|
Помогаю со студенческими работами здесь
20
Является ли это приемлемой практикой? Написать программы вставки, удаления и поиска элементов несортированного списка, используя для реализации списка массив Реализация функции вычисления электронно-цифровой подписи RSA. Реализация функции проверки ЭЦП RSA Binding списка объектов из другого списка объектов списка Работа со списком, поиск элемента в списке по параметрам элемента в списке, удаление одинаковых и изменение существующих Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
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
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|