|
Вопрос про быстродействие платфомы | ☑ | ||
---|---|---|---|---|
0
fly7
13.01.12
✎
11:44
|
Прочитал что если в модуле минимум строк, то он быстрее компилируется и в итоге быстрее работает 1с
как думаете имеет смысл перелопатить все модули в одну строку? |
|||
1
Wobland
13.01.12
✎
11:45
|
подтверждаю, проверял
Для Цикл ... КонецЦикла работает заметно быстрее, чем Для Цикл ... КонецЦикла только тебе оно надо всё лопатить |
|||
2
Asmody
13.01.12
✎
11:45
|
да, обязательно! а разве у тебя по другому?
|
|||
3
Maxus43
13.01.12
✎
11:46
|
имхо бред. даже если есть доля правды - прирост производительности будет оченьоченьочень мал, а вот читать этот код ты уже не сможеш
|
|||
4
jsmith82
13.01.12
✎
11:46
|
я уже давно перелопатил всю конфу, скорость возрасла в разы, блокнот и калькулятор нервно курят в сторонке
|
|||
5
asady
13.01.12
✎
11:47
|
(0) сабж спорный - но направление ваших мыслей мне нравится....
|
|||
6
Fish
13.01.12
✎
11:47
|
Главное -это "все модули в одну строку" - именно ВСЕ модули и в одну строку :)))
|
|||
7
Maxus43
13.01.12
✎
11:48
|
а, пятница же, ДА! всё УПП в одну строку переписал давно, летает просто
|
|||
8
Asmody
13.01.12
✎
11:49
|
1С специально типовые пишет с разбиением на строки, да ещё комментарии вставляет, чтобы снизить производительность. У них тайный сговор с продавцами компьютеров
|
|||
9
БалбесВ1с
13.01.12
✎
11:50
|
(0)Антон,где прочитал то? Дай ссылку.
|
|||
10
jsmith82
13.01.12
✎
11:50
|
кстати, вы черех хекс-редактор тоже убирали вставки из 1сv8.exe?
|
|||
11
DmitryPavlik
13.01.12
✎
11:50
|
(8) наверняка так!
а ещё пустые строки-разделители добавляют - якобы для облегчения понимания кода! |
|||
12
jsmith82
13.01.12
✎
11:51
|
(11) больше всего тормозит из-за комментов, особенно если они зелёного цвета
|
|||
13
Maxus43
13.01.12
✎
11:51
|
(12) подтверждаю, у меня они черного щас, быстрей пашет
|
|||
14
Asmody
13.01.12
✎
11:51
|
(10) я его вообще сразу удаляю. без него производительность вырастает на порядок!
|
|||
15
программистище
13.01.12
✎
11:54
|
это сговор 1с с производителями железа
у них в типовых не только в одну строку, но и через каждую строку пустая строка |
|||
16
petrowsky
13.01.12
✎
11:55
|
(0) быстрее всего будет, если вообще от кода избавиться, я гарантирую
|
|||
17
DmitryPavlik
13.01.12
✎
11:55
|
(16) как раз хотел предложить этот способ
может быт даже вообще платформу не запускать... |
|||
18
jsmith82
13.01.12
✎
11:56
|
или удалить вообще с компа, так наверно быстрее всего будет работать
|
|||
19
jsmith82
13.01.12
✎
11:56
|
как Asmody
|
|||
20
Maxus43
13.01.12
✎
11:57
|
быстрей будет на счетах, компьютеры и 1с от лукавого
|
|||
21
DmitryPavlik
13.01.12
✎
11:57
|
(18) оставить голый ДОС, как у Asmody ?
|
|||
22
Asmody
13.01.12
✎
11:57
|
(21) у меня вообще-то убунта
|
|||
23
fly7
13.01.12
✎
11:57
|
(9) это на секретном форуме разрабов платформы, вас не пустит
|
|||
24
DmitryPavlik
13.01.12
✎
11:58
|
(22) для нетбуков - только кде :)
|
|||
25
Asmody
13.01.12
✎
11:58
|
(24) у меня айпад
|
|||
26
IamAlexy
13.01.12
✎
11:58
|
вы главное незабудьте убрать из этой строки все лишние пробелы, комментарии и тд и тп..
|
|||
27
petrowsky
13.01.12
✎
11:58
|
(20) согласен, компьютеры, программы - все это маркетинговые махинации
|
|||
28
Artem_Na
13.01.12
✎
12:04
|
(0) Это справедливо для 1С 7.7 -- там внутренний опкод 01 (LINE) использовался для нужд отладчика/анализа производительности. Как в 1С 8.x -- не знаю.
|
|||
29
Wobland
13.01.12
✎
12:13
|
// вариант 1
Старт=обMSScriptControl.eval("new Date().getTime()"); Для й=0 По 1000000 Цикл й=й; КонецЦикла; Финиш=обMSScriptControl.eval("new Date().getTime()"); Сообщить("Вариант 1: "+(Финиш-Старт)/1000+" сек."); // вариант 2 Старт=обMSScriptControl.eval("new Date().getTime()"); Для й=0 По 1000000 Цикл й=й; КонецЦикла; Финиш=обMSScriptControl.eval("new Date().getTime()"); Сообщить("Вариант 2: "+(Финиш-Старт)/1000+" сек."); ===================================== Вариант 1: 14,722 сек. Вариант 2: 1,125 сек. Вариант 1: 14,143 сек. Вариант 2: 1,203 сек. Вариант 1: 14,175 сек. Вариант 2: 1,156 сек. |
|||
30
jsmith82
13.01.12
✎
12:15
|
Для и=1 по 1000 цикл ТелоЦикла(); КонецЦикла;
|
|||
31
jsmith82
13.01.12
✎
12:16
|
в общем идея понятна, любое тело цикла обрамлять в отдельную процедуру
|
|||
32
GROOVY
13.01.12
✎
12:17
|
(0) Вот так новичкам лапшу и навешивают :)
|
|||
33
hhhh
13.01.12
✎
12:20
|
(29) точка с запятой ведь не нужна. Попробуй
Для й=0 По 1000000 Цикл й=й КонецЦикла; |
|||
34
Wobland
13.01.12
✎
12:27
|
(33) пошутил? монописуально
Вариант 1: 14,252 сек. Вариант 2: 1,156 сек. |
|||
35
GROOVY
13.01.12
✎
12:27
|
(34) А вы тут что на полном серьезе это обсуждаете?!
|
|||
36
Cube
13.01.12
✎
12:28
|
(35) +1. Я вот тоже насторожился))
|
|||
37
Wobland
13.01.12
✎
12:28
|
(35) я не знаю, я выпал из разговора ;)
|
|||
38
БалбесВ1с
13.01.12
✎
12:29
|
(35)Что так всполошился? Твой секрет раскрыт!
|
|||
39
Турбо
13.01.12
✎
12:30
|
"Секреты программирования в 1с" )))
|
|||
40
GROOVY
13.01.12
✎
12:33
|
(38) О каком секрете идет речь? Я офигеваю от того что топик реально кто то всерьез может воспринимать.
|
|||
41
МуМу
13.01.12
✎
12:33
|
(0) Бред что бы это обсуждать серьезно.
|
|||
42
Cube
13.01.12
✎
12:35
|
Блин, реально... Код обработки:
Процедура КнопкаВыполнитьНажатие(Кнопка) обMSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl"); обMSScriptControl.Language = "javascript"; // вариант 1 Старт=обMSScriptControl.eval("new Date().getTime()"); Для й=0 По 1000000 Цикл й=й; КонецЦикла; Финиш=обMSScriptControl.eval("new Date().getTime()"); Сообщить("Вариант 1: "+(Финиш-Старт)/1000+" сек."); // вариант 2 Старт=обMSScriptControl.eval("new Date().getTime()"); Для й=0 По 1000000 Цикл й=й; КонецЦикла; Финиш=обMSScriptControl.eval("new Date().getTime()"); Сообщить("Вариант 2: "+(Финиш-Старт)/1000+" сек."); КонецПроцедуры //КнопкаВыполнитьНажатие() Результаты: Вариант 1: 7,35 сек. Вариант 2: 0,587 сек. Вариант 1: 7,207 сек. Вариант 2: 0,587 сек. |
|||
43
Wobland
13.01.12
✎
12:35
|
(40) модули лопатить, конечно, бред, а вот вырост производительности на порядок достойно внимания
|
|||
44
decdmb
13.01.12
✎
12:36
|
Никто не в курсе, 1С планирует добавить в язык asm-вставки??? ;P
|
|||
45
GROOVY
13.01.12
✎
12:37
|
Без отладки ктонить тестил?
|
|||
46
Cube
13.01.12
✎
12:37
|
(42) Я в шоке... Где подвох? о_О
|
|||
47
decdmb
13.01.12
✎
12:38
|
(45)
Вариант 1: 0,757 сек. Вариант 2: 0,526 сек. |
|||
48
Cube
13.01.12
✎
12:38
|
(45) Без отладки. Рабочая база на SQL:
Вариант 1: 1,076 сек. Вариант 2: 0,573 сек. Вариант 1: 1,03 сек. Вариант 2: 0,577 сек. Вариант 1: 1,045 сек. Вариант 2: 0,593 сек. |
|||
49
Cube
13.01.12
✎
12:49
|
Так это, че делать-то будем?)) Групповую обработку текстов модулей?)))))
|
|||
50
H A D G E H O G s
13.01.12
✎
12:53
|
Отключайте отладчик.
|
|||
51
GROOVY
13.01.12
✎
12:53
|
Давайте проясним.
1С это платформа-интерпретатор с предварительной компиляцией. по сути скриптовый язык который из ЧПЯ скрипт переписывает в свой формат (СФ). В СФ игнорируются пробелы, переносы, комментарии и прочая хня... => скорость выполнения может меняться только на этапе предварительной компиляции. Все. Кто видел СФ меня поймет. кто не видел - советую создать обработку, запаролить ее модуль и покурить в сторону блокнота++ для медитации. |
|||
52
Cube
13.01.12
✎
12:56
|
(50) Читай (48).
|
|||
53
hhhh
13.01.12
✎
12:58
|
(52) ну вообще-то по сравнению с запросами эта прибавка - такой мизер, что не парься даже.
Эти циклы занимают 0,0001% от общего времени выполнения кода, а будут занимать 0,00001%. |
|||
54
DmitrO
13.01.12
✎
13:10
|
1С во время работы модуля, между отработкой каждой строки проверяет очередь сообщений на предмет сообщений WM_PAINT и WM_NCPAINT и если они там есть, то диспатчит их (собственно выполняет отрисовку). Это сделано для того, чтобы окно приложения не "замерзало".
Косвенным подтверждением этого предположения может быть пропорциональное увеличение разницы в замерах с увеличением количества отрисовок. |
|||
55
kosts
13.01.12
✎
13:12
|
(0) Тестирование на более реальной задаче
Тест Обработано 1 155 записей Вариант 1: 11,749 сек. Обработано 1 155 записей Вариант 2: 11,688 сек. Тест Обработано 1 155 записей Вариант 1: 12,203 сек. Обработано 1 155 записей Вариант 2: 11,765 сек. Тест Обработано 1 155 записей Вариант 1: 11,781 сек. Обработано 1 155 записей Вариант 2: 11,703 сек.
Вижу что очень мало смысла все пихать в одну строку. |
|||
56
kosts
13.01.12
✎
13:15
|
Еще интересно проверить выполнение на сервере...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |