v8: Сегодня только узнал что 1С82 умеет кэшировать вызовы функций, офигел #369307


#0 by Гений 1С
Причем этим кэшированием можно управлять, кэшируемые функции нужно выносить в специальные модули. Правда кэш она хранит пять минут только в случае бездействия, это плохо. Но т.к. нет глобальных серверных переменных, такая хрень достаточно полезна... Интересно, чего там еще такого есть, скрытого!
#0 by Гений 1С
Причем этим кэшированием можно управлять, кэшируемые функции нужно выносить в специальные модули. Правда кэш она хранит пять минут только в случае бездействия, это плохо. Но т.к. нет глобальных серверных переменных, такая хрень достаточно полезна... Интересно, чего там еще такого есть, скрытого!
#1 by ТелепатБот
#2 by mikecool
ссылку на описание
#3 by Гений 1С
Нету ссылки. Мне сказали...
#4 by Гений 1С
Т.е. типо если Ф(А,Б,В) то в следующий раз Ф(А,Б,В) не вычисляется, а возвращается ранее вычисленный результат. Без изменения кода можно увеличивать производительность.
#5 by ДенисЧ
А если в этой Ф считаются остатки по регистрам? Тоже кешируется?
#6 by ДенисЧ
ЗЫ. "гитик" пишется через И :-)
#7 by ОчкарикСлава
Много чего кэшируется, описано в практич. пособии разработчика, читал гдето когдато...
#8 by Rovan
(+5) или ищется некий элемент(ы) справочника (по фильтру) или документ по номеру :-)
#9 by Rovan
недано обсуждали про кеширование объектов (документ, справочник)
#10 by IamAlexy
а еще 8ка бизнеспроцессы умеет... много бизнеспроцессов в типовых? :)
#11 by nop
Что значит "кэшировать функции" ?? Результат функции кэшировать очень сложно. Кэшируется код? Вот это полезность, так полезность...
#12 by IamAlexy
вопрос в том что есть кеширование функции.. если значение какоелибо то нафига его кешировать если можно в переменную записать. если объект - то чем это отличается от кеширования объектов??? соответственно функция вызывается тогда когда нужно именно что то новое получить... все старье в переменных... накой фиг ее кешировать то? :)
#13 by H A D G E H O G s
Мне вчера сказали, что всех Гениев 1C, а также Гениев 1АБ, и также Гениев 18+ отправляют на Байкал омуля добывать.. Ссылку привести тоже не могу.
#14 by Rovan
как это Кэшируется код? код в смысле 1С.exe ? - за это мс вынь отвечает или код в конфа ? - дык она в пять грузится вся
#15 by nop
Тема кэша не раскрыта ...
#16 by Гений 1С
к тому же где ты видел документацию по 1с в онлайне? только в книжках. гыгыгы
#17 by Гений 1С
А нефиг такую функцию вызывать для остатков по регистрам. Кешируется по параметрам, т.е. по сигнатуре параметров
#18 by Jolly Roger
Чо за бред?
#19 by Гений 1С
Да, но теперь этим можно управлять.
#20 by Гений 1С
кури 4-й пост
#21 by ДенисЧ
Не 1су решать, что и когда мне вызывать.
#22 by i-rek
не может быть. Если б это было так, оборотка запускалась бы первый раз долго, второй раз мгновенно. Этого не происходит ))
#23 by Господин ПЖ
эээ... нафига вызывать Ф(А,Б,В) несколько раз подряд...
#24 by IamAlexy
но ведь в это же бред. над вами прикололись а вы повелись? если мне нужно результат Ф(а,б,с) использовать повторно то я сделаю так: ну и дальше буду играться с переменной "результат". а когда мне потребуется обновить значение переменной я повторно вызову функцию нафига мне КЕШИРОВАТЬ РЕЗУЛЬТАТ РАБОТЫ ФУНКЦИИ????
#25 by Гений 1С
ну например если у тебя есть функция Ф(А,Б), ты ее вызываешь Ф(Пользователь Петров, ОсновнаяВалюта) = Доллары, то в следующий раз когда ты вызовешь Ф(Пользователь Петров, ОсновнаяВалюта), она вернет Доллары, не вычисляя. А вот если ты спросишь Ф(Пользователь Иванов, ОсновнаяВалюта) или Ф(Пользователь Петров, ОсновнойСклад), она опять будет вычислять.
#26 by Гений 1С
дятел, это для автоматического разруливания таких случаев:
#27 by Гений 1С
чтобы не хешировать ручками...
#28 by Господин ПЖ
Фиксин, а ты скульный кэш с кэшом 1С не путаешь?
#29 by Гений 1С
так это надо еще прикручивать... к тому же для оборотки это юзать бессмысленно. ;-) Не знаю, есть у них функция очистки кэша? вообще как обычно в 1с бывает, первые версии кривые и "нязграбныя", как говорят в белоруси
#30 by Гений 1С
нет, батенька
#31 by IamAlexy
неудачный пример. что мешает разрулить так: результат=ф(а,б,с);
#32 by Гений 1С
на партнерском была ветка, я там прочитал
#33 by Гений 1С
ну ты тормоз... я тебе идиотский пример специально привел. Кэш используется, когда ты не знаешь, из каких мест кода будет вызываться функция, но знаешь, что можно захешировать результат на все время жизни сеанса, например
#34 by Господин ПЖ
йопт... он сюды еще и хэш приплел... О_о
#35 by Гений 1С
извини, описался
#36 by Гений 1С
так вот, для алексия еще пример. Допустим ты считал настройку пользователя функцией НастройкаПользователя("ОсновнаяВалюта"). Чтобы в след раз не дергать регистр, функция хешируется. Можно конечно все настройки занести в глоб переменную, но тогда мы тратим лишнее время на чтение тех настроек, которые не нужны. Можно эмулировать кэш, но в данном случае все происходит на автомате.
#37 by nop
А если функция содержит чтение из БД?
#38 by IamAlexy
хоть один живой пример приведи. параметры сеанса нельзя использовать ?
#39 by H A D G E H O G s
Счаст мы тебя проверим...
#40 by Гений 1С
иногда имеет смысл кэшировать, например те же настройки пользователя. А если БД поменялась, можно сбросить кэш. Правда 1сники сбрасывают кэш целиком, мазафакеры.
#41 by Гений 1С
1с не рекомендует использовать много параметров сеанса. Это раз, во вторых тогда кэширование придется ручками прописывать
#42 by SilentMan
Я всегда знал, что читать ты не умеешь, лучше-бы ты писать не умел. Кэшировать умеет 8.2 ...
#43 by Гений 1С
Вот тебе живой пример. Я использую конвертацию одних проводок в другие. Для каждого счета я получаю список правил конвертацией функцией СписокПравилКонвертации(Сч). Так вот, я могу конечно составить соответствие и проверять, вычислял я уже список правил или нет, а могу тупо закэшировать результат функции.
#44 by Регистратор
похоже что в 1с занятья более нечем, лучшебы память у них на сервере не утекала
#45 by Гений 1С
Точно? Дело как было? я подумал, что неплохо было бы кэшировать, выдвинул тему на партнерском, а мне ответили, что это уже работает. ;-)
#46 by Гений 1С
плохому танцору
#47 by IamAlexy
хм.. честно говоря рациональное зерно есть но по сути это пушки по воробьям.. чо то мне сложно придумать что то более серьезное с кешем функции чем настройки пользователя которые можно во первых хранить в параметрах сеанса ибо их как правило немного... а париться с кешем ради того чтобы лишний раз не прочитать основную валюту пользователя - имхо бессмысленно совершенно...
#48 by SilentMan
При этом ты настолько ослеп, что раздел форума (куда тебя послали) прочитать не смог ...
#49 by H A D G E H O G s
#50 by ДенисЧ
А давайте гению на титан сбросимся... И лес целее будет, и строителям поможем...
#51 by H A D G E H O G s
Проценты: 25,95 24,73 24,66 24,65
#52 by Гений 1С
Ты просто мало занимался ускорением... Тебе простительно.
#53 by H A D G E H O G s
Ну да, тренд идет вниз :-)
#54 by Гений 1С
Ты не включил кэширование, ежик
#55 by Регистратор
Да достижение офигеть тормознутость своего интепретатора 1с пытается лечить кешированием результатов выполнения функций не обращающихся к данным :)))
#56 by H A D G E H O G s
1) Дмитрий, Дмитрий Сергеевич, Дима, Димочка, Димон, Димыч и даже Hadgehogs, но не как не ежик. Сергей, постарайся это понять и запомнить. Это совет. 2) Как мне включить это чудо - кэширование?
#57 by Jolly Roger
Кэширование результатов функций доступно только Гениям...
#58 by H A D G E H O G s
Тоесть, я - не айс?
#59 by Гений 1С
Спили мушку, включи кэширование... Кэширование автоматом не происходит. Функция должна быть в общем модуле, допускающем кэширование
#60 by H A D G E H O G s
Айн момент..
#61 by MSensey
Гений, у тебя в последнее время какое-то обострение. Отдохни чуток ps в 8.2 реализован
#62 by Гений 1С
в 8.2. тестируй, лана?
#63 by Гений 1С
тебя напрягает? если да, то чем? если нет, то фигли?
#64 by H A D G E H O G s
Гений, из тебя бы вышел показательный (знаковый) пользователь.. <<Сегодня только узнал что 1С81 умеет кэшировать>> <<в 8.2. тестируй, лана?>> Это нормально..
#65 by Господин ПЖ
эээ... так речь про 8.1 или 8.2 все таки?
#66 by trdm
Совершенно тупая, затратная и ненужная фигня. Лучше бы ресурс тратили на более умные вещи..
#67 by MSensey
Я тебе говорю взгляд со стороны, бывает что человек не замечает своей "болезни"
#68 by H A D G E H O G s
А если в расчете участвуют глобальные переменные, которые передаются не через параметры функции. И между вызовами они изменились. 1С это учтет?.
#69 by NULLL
Где сохранается кеш? Если на сервере - то он может не обновлятся и неделями.
#70 by Гений 1С
Не, борис, ты не прав, надо уметь готовить. У меня документ грузился 30 минут, после кеширования (правда ручками написал) - 3 минуты... А тут можно чисто автоматизировать без ручек.
#71 by Гений 1С
Ты видел хоть одного психа, осознавшего, что он псих. Смысл твоих усилий?
#72 by Гений 1С
функции хэшируются не по ссылке, а по значению параметров, если ты этого еще не понял
#73 by Дерево
я вот зарегится не поленился из-за тебя... делись!
#74 by MSensey
клятва гепократа
#75 by Гений 1С
А, я понял о чем ты. Ты кэшируемые функции пишешь сам, поэтому ответственность за их код на тебе. Не юзай глобальные (волитарные) переменные в коде кэшируемых функций. Для того чтобы юзать кеш, не любая функция годится
#76 by Гений 1С
чем делиться?
#77 by MSensey
"хэшируются" - Гений не наступай на теже грабли второй раз
#78 by Дерево
в написано : "У меня документ грузился 30 минут, после кеширования (правда ручками написал) - 3 минуты... А тут можно чисто автоматизировать без ручек." вот как это сделать и делись
#79 by Гений 1С
я проанализировал ход выполнения кода, обнаружил, где она больше всего жрет времени, вынес это в кэши, например: Кэширование поиска значений по ключу: Запрос создаю только один раз, а не в цикле, т.е. не тратится время на его компиляцию: Кэширование обращения к метаданным: Ну и еще много других мест. Все это дало прирост производительности в 10 раз. ;-) Но можно было бы юзать кэши 1с, если бы она это сделала нормально, а не как всегда.
#80 by Дерево
что-то мне вспомнился один земляк пристававший со словами: "Хэша хапнуть хочешь?"
#81 by Гений 1С
Кури
#82 by H A D G E H O G s
Не придерайтесь к словам. А вообще приблуда бесполезная, имеющая смысл только для ленивых/забывчивых/студентов.
#83 by Гений 1С
имеющая смысл для оптимизаторов, чтобы не писать такие многоэтажки, как в , хотя конечно если бы в 1с была возможность статических переменных и серверных глобальных переменных, кэширование было бы менее востребовано.
#84 by Дерево
пост не к автору а вообще - осень как никак
#85 by IamAlexy
да пофиг.. мы как писали ЭТО так и будем писать:
#86 by Гений 1С
придираться к буквам (буквоедство) - это характерная черта программистов... Реально, замечаю часто только у программеров. Для остальных важнее смысл, а не форма. Видимо сказывается нервная дрожь при ошибке одной буквы в идентификаторе и ругательство синтакс чека.
#87 by Дерево
КэшПоискЗначений = П.Кэши.ПоискЗначений[ВидСубконтоУУ]; "П." это что за зверь?
#88 by Гений 1С
Вот запрос = "...."; можно было бы прохешировать и не тратить время на компиляцию запроса...
#89 by Гений 1С
Это сквозная структура, содержит контекст, путешествует по всем функциям блока
#90 by 0xFFFFFF
Я вот не понял - речь про 8.1?
#91 by Живой Ископаемый
вы замучали! буквы "х" и "к" даже не рядом, следите за пальцами когда печатаете, а то меня в мозгу начинаются расходящиеся процессы...
#92 by Дерево
{Форма.Форма(3,21)}: Переменная не определена (П)    КэшПоискЗначений = <<?>>П.Кэши.ПоискЗначений[ВидСубконтоУУ]; {Форма.Форма(3,42)}: Переменная не определена (ВидСубконтоУУ)
#93 by Дерево
нифига не понял...
#94 by Гений 1С
ну ты даешь... это же фрагмент кода. а не готовый код.
#95 by Гений 1С
тренируй восприятие
#96 by Гений 1С
Уже сказали - 8.2, счас тему поменяю
#97 by MSensey
Гений, я не придераюсь, и не к буквам. А тому что ты не различаешь кэширование от хеширования.
#98 by Дерево
Супер!!!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С