Size: a a a

2021 March 18

I

Ilya in F# Chat
Shub Niggurath
Щас бы править код чисто чтобы отладчик был в состоянии поставить точку останова. А потом вертать все обратно вручную, чтобы случайно не реверснуть нужные изменения. Хороший план, насколько я понял. Надежный, как швейцарские часы
Щас бы код под отладчик писать?:)
источник

SB

S B in F# Chat
Shub Niggurath
Щас бы править код чисто чтобы отладчик был в состоянии поставить точку останова. А потом вертать все обратно вручную, чтобы случайно не реверснуть нужные изменения. Хороший план, насколько я понял. Надежный, как швейцарские часы
Если совсем прижало, то что делать. Либо дампить в стдаут, либо так.
источник

P

Pavel in F# Chat
Anton Ternavsky
Pavel Ну выше тебе сказали-оверрайдь GetHashCode()  и убедись, что у тебя нет конфликтов по хешкоду.
Да. Но я тут подумал, дикшионари наверно для мемоизации не айс. Если в нем есть и даже хэш оптимизирован, то далее он все равно проведет полный обход чтоб эквалити сравнить..
источник

SN

Shub Niggurath in F# Chat
S B
Если совсем прижало, то что делать. Либо дампить в стдаут, либо так.
Как насчет сразу писать так, чтобы в нужных местах точки останова ставились без приседаний? В локальном контексте, где есть вызовы каких-то примитивных апишек - это нормально, но городить глобальные ворфлоу на пайпах чисто потому, что «прикольно выглядит» - это сразу нет
источник

AT

Anton Ternavsky in F# Chat
Pavel
Да. Но я тут подумал, дикшионари наверно для мемоизации не айс. Если в нем есть и даже хэш оптимизирован, то далее он все равно проведет полный обход чтоб эквалити сравнить..
Ну да, у тебя одинаковые куски AST дерева одинаковый хеш иметь будут
источник

SN

Shub Niggurath in F# Chat
Плюс это сильный такой признак, что отдельные шаги нормально не комбинируются
источник

AT

Anton Ternavsky in F# Chat
И приплыли, кластеризация по хешу из большого кол-ва конфликтов-здравствуй вместо хештейбла множество списков, обернутых интерфейсом хештейбла
источник

SB

S B in F# Chat
Shub Niggurath
Как насчет сразу писать так, чтобы в нужных местах точки останова ставились без приседаний? В локальном контексте, где есть вызовы каких-то примитивных апишек - это нормально, но городить глобальные ворфлоу на пайпах чисто потому, что «прикольно выглядит» - это сразу нет
Ааа так ты про глобальный флоу
источник

SB

S B in F# Chat
Это другое
источник

SB

S B in F# Chat
Тут не спорю
источник

I

Ilya in F# Chat
Pavel  зачем использовать свой тип в качестве ключа?
источник

SB

S B in F# Chat
Я думал ты вообще против
источник

P

Pavel in F# Chat
Ilya
Pavel  зачем использовать свой тип в качестве ключа?
Мемоизацию функции сделать
источник

SN

Shub Niggurath in F# Chat
S B
Это другое
Ну я так сразу и написал
источник

SB

S B in F# Chat
Shub Niggurath
Ну я так сразу и написал
Я невнимательно прочёл, I stand corrected
источник

I

Ilya in F# Chat
Pavel понял. Но даже для этого случая, ты можешь в качестве ключа использовать один из мемберов своего типа
источник

AT

Anton Ternavsky in F# Chat
Pavel Возможно я твой контекст задачи до конца не понял, надо думать что ты собираешься хешировать, как представляешь AST, ну и прочая
источник

P

Pavel in F# Chat
Anton Ternavsky
Pavel Возможно я твой контекст задачи до конца не понял, надо думать что ты собираешься хешировать, как представляешь AST, ну и прочая
Текущий костыль который я применил - идентити-дикшионари. То есть ключ равный если ссылка на тот же объект
источник

P

Pavel in F# Chat
Anton Ternavsky
Ну этот алгоритм именно заточен на поиск одинаковых поддеревьев вычислений, и вместо рассчета множества идентичных поддеревьев считаем один раз. В оптимизационных задачах большой размерности на порядки иногда сокращало время, и это без использования других оптимизационных алгоритмов(будь то генетический или какой нибудь на градиентном спуске)
Кстати, одинаковые поддеревья тоже надо искать, буду благодарен если наставиш советом куда копать смотреть для оптимального алгоритма)..
источник

AT

Anton Ternavsky in F# Chat
Pavel
Кстати, одинаковые поддеревья тоже надо искать, буду благодарен если наставиш советом куда копать смотреть для оптимального алгоритма)..
я с телефона, стукнись как дойдешь до необходимости пилить код поиска поддеревьев, расскажу, алгоритм простой
источник