|
v8: Как ускорить создание объектов | ☑ | ||
---|---|---|---|---|
0
iceman2112
28.08.12
✎
15:44
|
Есть самописные обработки выгрузки-загрузки. Грузить ОЧЕНЬ долго, есть ли возможность ускорить процесс?
|
|||
8
Aprobator
28.08.12
✎
15:49
|
Перед записать, ЗаписываемыйОбъект.ОбменДанными.Загрузка = Истина; как минимум.
|
|||
9
Aprobator
28.08.12
✎
15:50
|
плюс работа с транзакцией.
|
|||
10
andrewks
28.08.12
✎
15:50
|
купить новый сервер ещё не предлагали?
|
|||
11
anddro
28.08.12
✎
15:50
|
экипаж прокачан на 100%? шоколад ставили?
|
|||
12
AlexTim03
28.08.12
✎
15:50
|
(6), уже есть сформироватьОченьБыстро(), работает в 1.5 раза быстрее предыдущей версии
|
|||
13
iceman2112
28.08.12
✎
15:51
|
(9) всё и так в транзакции.
|
|||
14
Повелитель
28.08.12
✎
15:51
|
Как вариант, взять машину времени, вернуться на нужное время назад, запустить вашу обработку в прошлом, а к настоящему времени она уже все сделает.
|
|||
15
iceman2112
28.08.12
✎
15:52
|
(8) не пробывал, а в чем смысл?
|
|||
16
anddro
28.08.12
✎
15:52
|
А если серьезно, то да, способы есть. Откройте для себя как минимум отладку с замером времени.
|
|||
17
andrewks
28.08.12
✎
15:52
|
(6) настоящие пацаны делают всё в одной:
Сформировать(Скорость) |
|||
18
Aprobator
28.08.12
✎
15:52
|
(15) отключаются проверки выполняемые при записи объекта.
|
|||
19
Aprobator
28.08.12
✎
15:53
|
плюс использовать кэширование объектов.
|
|||
20
ILM
гуру
28.08.12
✎
15:53
|
(8) Не выйдет, обработка самописная.
ТС, а имя обработки случайно не ВыгрузкаЗагрузкаXML.epf? |
|||
21
AlexTim03
28.08.12
✎
15:54
|
(0), кстати, 1С крайне не рекомендует в таких случаях делать замеры производительности.
|
|||
22
Aprobator
28.08.12
✎
15:54
|
(20) если конфа не самописная, то все очень даже выйдет.
|
|||
23
anddro
28.08.12
✎
15:54
|
(18) вот это "правильный" совет. Человек не знает про оптимизацию, а ему еще и предлагают отключить контроль корректности данных.
|
|||
24
iceman2112
28.08.12
✎
15:55
|
Что непонятного?
В коде загрузке много взяких запросов в БД. СоздатьОБъект() СоздатьДокумент() Столько талантов юмора просто капец |
|||
25
Повелитель
28.08.12
✎
15:56
|
Есть скрытые функции 1с, обращаться надо так, работает со скоростью света:
мТест = Новый Объект("ЧакНорис"); мТест.Сформировать(); |
|||
26
iceman2112
28.08.12
✎
15:56
|
(25) Найди Евгения Ваганыча
|
|||
27
Lex_Liven
28.08.12
✎
15:56
|
(7) А вот и нет. 80% крутят мышью, 19% покупают железо, а оптимизируют только 1%. И то это максимум.
|
|||
28
iceman2112
28.08.12
✎
15:56
|
(22) попробую
|
|||
29
iceman2112
28.08.12
✎
15:57
|
загружается всё в УТ11
|
|||
30
Aprobator
28.08.12
✎
15:57
|
(23) маловато информации для такого вывода. Может причина то в объеме данных.
|
|||
31
ILM
гуру
28.08.12
✎
15:58
|
(30)УФФ, наконец то, а что загружается то? Самописьки в студию, счас оптимизнём как следует.
|
|||
32
Aprobator
28.08.12
✎
15:58
|
(29) хм. А обработка на стороне клиента работает или сервера?
|
|||
33
iceman2112
28.08.12
✎
15:59
|
в обычном приложении
|
|||
34
ILM
гуру
28.08.12
✎
15:59
|
(31) к (29)
|
|||
35
H A D G E H O G s
28.08.12
✎
15:59
|
(33) Планы обмена?
|
|||
36
Serg_1960
28.08.12
✎
15:59
|
(24) Что непонятного? Ну например как в этой обработке соответствие объектов осуществляется? Если по коду или по наименованию - свободен. Век воли...тьфу... скорости тебе не видать :)
|
|||
37
Aprobator
28.08.12
✎
15:59
|
ща еще выяснится, что все через ОЛЕ тянется.
|
|||
38
iceman2112
28.08.12
✎
16:00
|
загружается Номенклатура + доп.свойства + упаковка + остатки по ней
|
|||
39
H A D G E H O G s
28.08.12
✎
16:00
|
В УТ-БП есть косяк в алгоритме планов обмена
|
|||
40
Aprobator
28.08.12
✎
16:00
|
(36) )
|
|||
41
H A D G E H O G s
28.08.12
✎
16:00
|
(38) Еще раз - планы обмена используются для загрузки?
|
|||
42
Aprobator
28.08.12
✎
16:00
|
(39) сомнительно, чтобы самописки у ТС использовали планы обмена.
|
|||
43
iceman2112
28.08.12
✎
16:01
|
(36)
Функция ПолучитьНоменклатуру(ИмяНоменклатуры) Экспорт Запрос = Новый Запрос; Запрос.УстановитьПараметр("Наименование", СокрЛП(ИмяНоменклатуры)); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Наименование = &Наименование | И НЕ Номенклатура.ЭтоГруппа"; Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Возврат Справочники.Номенклатура.ПустаяСсылка(); КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); Возврат Выборка.Ссылка; КонецФункции |
|||
44
Aprobator
28.08.12
✎
16:02
|
(43) еп.
|
|||
45
ILM
гуру
28.08.12
✎
16:02
|
Жалко самописки показать?
|
|||
46
AlexTim03
28.08.12
✎
16:02
|
(43) Браво!!!
|
|||
47
iceman2112
28.08.12
✎
16:02
|
(45) что ты хочешь конктретно? из xml файла грузиться
|
|||
48
iceman2112
28.08.12
✎
16:03
|
(46) в чем подвох?
|
|||
49
salvator
28.08.12
✎
16:03
|
(43) НайтиПоНаименованию ничего не говорит?
|
|||
50
salvator
28.08.12
✎
16:03
|
ни о чем*
|
|||
51
iceman2112
28.08.12
✎
16:04
|
(49) тот же самый запрос
|
|||
52
ILM
гуру
28.08.12
✎
16:04
|
Прикинь, вы каждую номенклатуру по наименованию находите и грузите.
|
|||
53
Lex_Liven
28.08.12
✎
16:04
|
(43) Чувак, а ты про такую вещь, как
Справочники.Номенклатура.НайтиПоНаименованию(Наименование);
Никогда не слышал? |
|||
54
H A D G E H O G s
28.08.12
✎
16:04
|
ТЗ кэша как минимум.
Это узкое место, автор? |
|||
55
AlexTim03
28.08.12
✎
16:04
|
(48) а что будешь делать, если 2 номенклатуры имеют одинаковое наименование?
|
|||
56
iceman2112
28.08.12
✎
16:04
|
(52) а как иначе?
|
|||
57
iceman2112
28.08.12
✎
16:04
|
(55) вопрос не в этом
|
|||
58
AlexTim03
28.08.12
✎
16:06
|
(57) уже несколько человек сказало ответ -
сделай замер производительности сделай кэширование объектов |
|||
59
Serg_1960
28.08.12
✎
16:06
|
"Будь мужиком"(с) - сделай однажды синхронизацию объектов по внутренним идентификаторам :)
|
|||
60
Serg_1960
28.08.12
✎
16:07
|
(56) "А как иначе?" - ну, например, регистр сведений соответствия объектов обмена - не искать то, что однажды уже было найдено.
|
|||
61
iceman2112
28.08.12
✎
16:08
|
ЭТО НЕ ОБМЕН!!!!
|
|||
62
iceman2112
28.08.12
✎
16:08
|
Перенос остатокв
|
|||
63
H A D G E H O G s
28.08.12
✎
16:09
|
Перенос остатков в оптимизации не нуждается.
|
|||
64
iceman2112
28.08.12
✎
16:10
|
(63) я бы и не спрашивал, если бы было не нужно
|
|||
65
H A D G E H O G s
28.08.12
✎
16:10
|
Если у тебя в переносе останков затык по производительности - ищи точно в другом месте.
|
|||
66
Serg_1960
28.08.12
✎
16:10
|
(61) ДА КАКАЯ РАЗНИЦА-ТО?
PS: не кричи. Не првильно поймут. |
|||
67
H A D G E H O G s
28.08.12
✎
16:10
|
Инфа 146%, что тормозит поиске по наименованию?
|
|||
68
ILM
гуру
28.08.12
✎
16:12
|
Отчаяние охватило ТС. Терпи, тут так всегда, сначала ...., ну а потом подскажут.
|
|||
69
Lex_Liven
28.08.12
✎
16:12
|
(67) Если так написан поиск по наименованию, где гарантия, что другие фрагменты написаны лучше? Там явно тормозит везде.
|
|||
70
H A D G E H O G s
28.08.12
✎
16:13
|
(69) Ничего критичного я пока не увидел.
|
|||
71
Serg_1960
28.08.12
✎
16:13
|
(67) Нет, конечно. Автор, однако, замер производительности не делал. Может быть у него и создание объектов такое-же как поиск :) Али тормозит при проведении документов в приёмнике.
|
|||
72
Lex_Liven
28.08.12
✎
16:13
|
(0) По теме. Узкие места любой операции - в циклах. Делись более крупными кусками кода.
|
|||
73
H A D G E H O G s
28.08.12
✎
16:14
|
Думаю, на уровень выше он вытаскивает ИНН через точку.
|
|||
74
H A D G E H O G s
28.08.12
✎
16:14
|
Артикул, простите.
|
|||
75
ILM
гуру
28.08.12
✎
16:15
|
(70) Я тоже, но НайтиПоНаименованию() разве не будет, а нет не будет или будет, или не будет. Нужно замерить.
|
|||
76
Serg_1960
28.08.12
✎
16:17
|
Имхо: у меня остатки для проведения инвентаризации выгружались из другой базы с неявным(!) поиском по наименованию. Около десяти тысяч наименований номенклатуры за 30-40 сек. Разве это "тормозит"?
|
|||
77
acsent
28.08.12
✎
16:17
|
(53) Вот оно новое поколение. ((((
|
|||
78
0Mint
28.08.12
✎
16:18
|
(0) Обработки выложи уже наконец.
|
|||
79
Lex_Liven
28.08.12
✎
16:20
|
(77) С этого момента поподробнее, пожалуйста. И с интонацией.
|
|||
80
Serg_1960
28.08.12
✎
16:24
|
(79) Подробно и и интонациями :)) http://nsportal.ru/ap/drugoe/library/issledovatelskaya-rabota-po-russkomu-yazyku-vliyanie-internet-slenga-na-rechevuyu
|
|||
81
Lex_Liven
28.08.12
✎
16:27
|
[OFFTOP] Вы про слово "Чувак"? Больше не вижу ошибок в своей реплике [/OFFTOP]
|
|||
82
Serg_1960
28.08.12
✎
16:35
|
(81) И про "это" и про другое. Например, про правила общения на форуме Мисты.
(В стиле Lex_Liven Видишь пимпочку слева внизу экрана? Там ещё "Правила" написано? Нажми, не ленись. Много интересного узнаешь. Когда-то за нарушение правил 1), 5) или 7) банили модераторы. |
|||
83
H A D G E H O G s
модератор
28.08.12
✎
16:37
|
Чего? Где, нарушения? Кого забанить?
|
|||
84
Lex_Liven
28.08.12
✎
16:38
|
(82) Я не нарушил ни одного правила. Но мы с вами сейчас нарушаем 5). Обращение на "вы" здесь редкость за те 10 месяцев, что я на форуме.
(83) Можете меня, если Serg_1960 так считает, и это является неопровержимой причиной. |
|||
85
acsent
28.08.12
✎
16:39
|
(79) Не понимаешь ты как 1ска работает а уже советы пытаешься давать. Ну растолкуй чем НайтиПоНаименованию лучше запроса
|
|||
86
H A D G E H O G s
28.08.12
✎
16:40
|
Ладно парни, давайте забудем обиды.
|
|||
87
Lex_Liven
28.08.12
✎
16:41
|
(85) Да, я не знаю, что именно делает "НайтиПоНаименованию" на уровне данных, но, как минимум, это оптимизирует читаемость кода и время его написания программистом, а для разовых операций это время становится важнее времени выполнения кода.
|
|||
88
ptiz
28.08.12
✎
16:44
|
Тут нужны телепаты 81го уровня.
|
|||
89
ILM
гуру
28.08.12
✎
16:48
|
(87) Там весь код автора меняется на вызов "НайтиПоНаименованию".
|
|||
90
Широкий
28.08.12
✎
16:50
|
Оптимизирую обработку. Дорого
|
|||
91
Axel2009
28.08.12
✎
16:56
|
(36) это с каких пор скорости не видать?
открываю индексы таблицы, вижу индекс по коду и наименованию. пусть не кластерный, но он есть. длина уникального ключа 16 байт, у кода длина обычно 8-10 символов, дальше аналогии предлагать? |
|||
92
H A D G E H O G s
28.08.12
✎
16:57
|
8-10 символов умножить на 2 не забудь.
|
|||
93
acsent
28.08.12
✎
16:59
|
Ну будет не 0.001сек искаться, а 0.002. что велика рзница???
|
|||
94
Axel2009
28.08.12
✎
17:00
|
(87) вот если не знаешь, то лучше промолчать.
|
|||
95
H A D G E H O G s
28.08.12
✎
17:00
|
Автор уже давно забил на тему.
|
|||
96
acsent
28.08.12
✎
17:01
|
(95) дык и мы уже давно забили на автора. Гораздо интереснее друг друга помоями облить ))
|
|||
97
Serg_1960
28.08.12
✎
17:02
|
Это, в принципе, не принципиально :) Про поиск по коду/наименованию (точнее - скорость исполнения) - это шутка и ничего более. А (36) - намёк на то, что неплохо бы узнать "подробности" алгоритма обмена.
|
|||
98
Axel2009
28.08.12
✎
17:03
|
(0) если через COM-объект, тогда в нем тормоз процентов на 60
|
|||
99
Serg_1960
28.08.12
✎
17:04
|
(97) Тьфу, опять оговорился. Не "обмена" - а "обработки".
|
|||
100
H A D G E H O G s
28.08.12
✎
17:04
|
(98) Это от нежелания замеры делать и читать матчасть.
|
|||
101
Serg_1960
28.08.12
✎
17:10
|
(98) Не соглашусь, пожалуй. Выгрузка/загрузка в XML - вот это ещё тот тормоз. Особенно на больших объёмах. Да ещё когда всё это упаковано в одну транзакцию.
|
|||
102
Axel2009
28.08.12
✎
17:12
|
(101) Выгрузка/загрузка в XML это еще больший тормоз, чем через COM-объект. но у COM-объекта своих тормозов хватает выше крыши.
|
|||
103
acsent
28.08.12
✎
17:12
|
(101) если выгрузжать без обхектов по ссылкам, то довольно таки быстро
|
|||
104
Bober
28.08.12
✎
17:18
|
(0) как вариант вынести запрос по наименованию за цикл, например:
ТЗДанных = Новый ТаблицаЗначений; ТЗДанных.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(100)); ТЗДанных.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число")); Для НомерСтроки = 1 По КоличествоСтрок Цикл ... ТЗДанных.Добавить(); ТЗДанных.Наименование = СокрЛП(НаименованиеТекст); ТЗДанных.Количество = Число(КоличествоТекст); КонецЦикла; ТекстЗапроса = "ВЫБРАТЬ | ТЗ.Наименование КАК Наименование, | ТЗ.Количество |ПОМЕСТИТЬ ТЗДанных |ИЗ | &ТЗДанных КАК ТЗ | |ИНДЕКСИРОВАТЬ ПО | Наименование |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка, | Номенклатура.Наименование КАК Наименование |ПОМЕСТИТЬ Номенклатура |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Наименование В | (ВЫБРАТЬ | ТЗ.Наименование | ИЗ | ТЗДанных КАК ТЗ) | И НЕ Номенклатура.ЭтоГруппа | |ИНДЕКСИРОВАТЬ ПО | Наименование |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Данные.Наименование КАК Наименование, | Номенклатура.Ссылка |ПОМЕСТИТЬ СинхронизированныеДанные |ИЗ | (ВЫБРАТЬ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Ссылка, | ТЗДанных.Наименование КАК Наименование | ИЗ | Номенклатура КАК Номенклатура | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗДанных КАК ТЗДанных | ПО Номенклатура.Наименование = ТЗДанных.Наименование | | СГРУППИРОВАТЬ ПО | ТЗДанных.Наименование | | ИМЕЮЩИЕ | КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) = 1) КАК Данные | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Номенклатура КАК Номенклатура | ПО Данные.Наименование = Номенклатура.Наименование | |ИНДЕКСИРОВАТЬ ПО | Наименование |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЕСТЬNULL(СинхронизированныеДанные.Ссылка, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура, | ТЗДанных.Наименование, | ТЗДанных.Количество |ИЗ | ТЗДанных КАК ТЗДанных | ЛЕВОЕ СОЕДИНЕНИЕ СинхронизированныеДанные КАК СинхронизированныеДанные | ПО ТЗДанных.Наименование = СинхронизированныеДанные.Наименование"; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ТЗДанных", ТЗДанных); ТЗДанных = Запрос.Выполнить().Выгрузить(); |
|||
105
Serg_1960
28.08.12
✎
17:22
|
Заранее согласен с обоими оппонентами :)
Не знаю алгоритм обработки, могу предположить следующие: когда поиск по наименованию не находит объект - что делается дальше? Вероятно, не исключаю такое, что передаётся весь объект "целиком". Вот тут и кроются различия XML и COM-соединения. И в свете вышесказанного, (101) уже несколько о другом аспекте их отношений :) |
|||
106
Serg_1960
28.08.12
✎
17:24
|
Упс, я афк. Сорри.
|
|||
107
ПиН
28.08.12
✎
17:25
|
(0) начатьтранзакцию, зафиксирваотьтранзакцию...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |