|
сравнение количества кода в Бух 3.0 и 7.7 | ☑ | ||
---|---|---|---|---|
0
vde69
30.01.13
✎
10:42
|
интересно сравнить порядок количества строк кода в типовых конфигурациях,
меня интересует бух 7.7 (в глобальнике примерно 70к, на вскидку думаю в целом примерно 200к) Бух 3.0 а вот сколько в ней? хотя-бы на вскидку! |
|||
1
МихаилМ
30.01.13
✎
10:47
|
gcomp
и v8unpack Вам помогут |
|||
2
Maxus43
30.01.13
✎
10:49
|
выгрузить файлы конфы и посчитать не предлагать?
|
|||
3
Fragster
гуру
30.01.13
✎
10:50
|
в нашей конфе 38мб кода, если выгрузить в текстовые файлы...
|
|||
4
Fragster
гуру
30.01.13
✎
10:50
|
говнокодапо большей части, к сожалению :(
|
|||
5
vde69
30.01.13
✎
10:51
|
зачем изобретать велосипед когда наверняка кто-то уже мерил?
|
|||
6
DrShad
30.01.13
✎
10:52
|
зачем мерить то что само по себе несоизмеримо?
|
|||
7
Maxus43
30.01.13
✎
10:55
|
сравнивать лошадей с утокносами по количеству мяса - исконно русская забава
|
|||
8
Базис
naïve
30.01.13
✎
10:57
|
Возьми машину с большой оперативкой и пересчитай символы ";".
Получишьь оценку снизу, методически неточную (в восьмёрке ещё бы "|" добавить, т.к. это тексты запросов. Но быстро. |
|||
9
Maxus43
30.01.13
✎
11:01
|
(3) за 1 Мб кода - 2 Мб быдлокода дают!
|
|||
10
vde69
30.01.13
✎
11:10
|
(8) по данной методе примерно 800к строк
|
|||
11
Maxus43
30.01.13
✎
11:11
|
(10) отдельно считай Если Тогда Иначе, Попытка и т.д., ибо нет там ;
|
|||
12
Maxus43
30.01.13
✎
11:11
|
короче мильён. автор доволен?
|
|||
13
Fragster
гуру
30.01.13
✎
11:12
|
(9) да, у меня одну процедуру (!!!) получилось сократить с 5000 строк до 300 строк, распределенных по 4-5 процедурам...
|
|||
14
vde69
30.01.13
✎
11:17
|
7.7 примерно 170к
3.0 примерно 800к |
|||
15
Maxus43
30.01.13
✎
11:17
|
(13) почти наверняка читаемость хуже стала) оптимизировать тоже надо осторожно)
|
|||
16
Fragster
гуру
30.01.13
✎
11:20
|
(15) нет, не стала. убрал копипасту, 9 уровней "если", и т.п. кое где заменил циклы на встроенные методы, поменяв наименование колонок во временных ТЗ применил ЗаполнитьЗначениеСвойств, в некоторых местах просто изменил 2 прохода данных на 1... много всего, это был именно рефакторинг, а не экстремальная оптимизация с борьбой за милисекунды...
|
|||
17
ptiz
30.01.13
✎
11:33
|
(16) А зачем?
|
|||
18
Darklight
30.01.13
✎
11:41
|
(15)Обычно это как раз приводит улучшению значимости и снижает бажность кода. Читайте Робера Мартина "Чистый код"
http://www.ozon.ru/context/detail/id/5011068/ |
|||
19
Darklight
30.01.13
✎
11:45
|
(18)Опечатка: Значимости->Читаемости
|
|||
20
Maxus43
30.01.13
✎
11:52
|
(18) рефакторинг улучшает, это понятно. а например "экстремальная оптимизация" - снижает на порядок, тем более в 1с в Управляемом приложении
|
|||
21
Fragster
гуру
30.01.13
✎
11:54
|
(17) надо было изменить поведение чуть-чуть... и пошло поехало...
|
|||
22
Fragster
гуру
30.01.13
✎
11:56
|
(20) у меня "экстремальная оптимизация" только в одном месте:
преобразование строки в массив: Возврат ЗначениеИзСтрокиВнутр("{""#"",51e7a0d2-530b-11d4-b98a-008048da3034,{0,{""S"",""" + СтрЗаменить(СтрЗаменить(Строка, """", """"""), Разделитель, """},{""S"",""") + """}}}"); |
|||
23
Надсмотрщик
30.01.13
✎
11:57
|
(14) Только в одной обработке "ДокументооборотСКонтролирующимиОрганами" - около 100к строк кода
|
|||
24
Maxus43
30.01.13
✎
12:08
|
(22) замечал что ЗначениеИзСтрокиВнутр работает нифига не быстро. От задачи конечно зависит, стандартная функция разложения строки в массив дольше? (ну или не стандартная)
|
|||
25
Fragster
гуру
30.01.13
✎
12:10
|
(24) дольше в разы на небольшом количестве итогового массива (до 10), и очень, очень сильно дольше, когда в результирующем массиве > 1000 элементов должно получиться
|
|||
26
shurikvz
30.01.13
✎
12:14
|
Ради интереса, а есть у кого-нибудь данные во сколько человеко-часов на текущий момент оценивается УПП, ну или Бух, ну или любая типовая конфа?
|
|||
27
Maxus43
30.01.13
✎
12:20
|
По замеру производительности - получение массива из внутреннего представления - в 2 раза дольше чем создание и заполнение массива с нуля
Процедура КнопкаВыполнитьНажатие(Кнопка) //Массив А = ПолучитьМассивА(); //ЗначениеИзСтрокиВнутр тот же массив Б = ПолучитьМассивБ(); КонецПроцедуры Функция ПолучитьМассивА() А = Новый Массив(); А.Добавить(1); А.Добавить(2); А.Добавить(3); А.Добавить(4); А.Добавить(5); А.Добавить(6); А.Добавить(7); А.Добавить(8); А.Добавить(9); А.Добавить(10); Возврат А; КонецФункции Функция ПолучитьМассивБ() Б = ЗначениеИзСтрокиВнутр("{""#"",51e7a0d2-530b-11d4-b98a-008048da3034,{10,{""N"",1},{""N"",2},{""N"",3},{""N"",4},{""N"",5},{""N"",6},{""N"",7},{""N"",8},{""N"",9},{""N"",10}}}"); Возврат Б; КонецФункции |
|||
28
Maxus43
30.01.13
✎
12:21
|
(25) > (27) померял так для примера, чот наоборот получается
|
|||
29
Fragster
гуру
30.01.13
✎
12:23
|
(28) и где в ПолучитьМассивА() разбор строки "1,2,3,5,6,7,8,9,10" ?
|
|||
30
pumbaEO
30.01.13
✎
12:35
|
(0) все не читал, а в чем проблема? Посчитать?
|
|||
31
Maxus43
30.01.13
✎
12:55
|
(29) тут не про разбор, тут про создание массива по феншую, и получение массива из строки представления
|
|||
32
Fragster
гуру
30.01.13
✎
12:57
|
(31) я тебе говорю про преобразование строки в массив. т.е. есть строка с разделителями, надо из нее сделать массив. каноничный способ в цикле с поиском разделителя, лев и сред отсасывает конкретно.
|
|||
33
Новиков
30.01.13
✎
13:05
|
Коллега @RomanSun делал исследование некоторое на тему, похожую в (0).
Ознакомиться можно тут: http://infostart.ru/public/164960/ |
|||
34
Darklight
30.01.13
✎
13:19
|
(32)Всегда использовал СтрПолучитьСтроку(СтрЗаменить(Строка,МойРазделитель,Символы.ПС) - получает это существенно медленнее работает, чем (20)?
Если медленеее - то из-за чего, из-за длинных строк, большого числа разделяемых элементов, частых вызовов? |
|||
35
Reset
30.01.13
✎
13:24
|
(27) Ща тест забабахаю с учетом (29), любопытно.
|
|||
36
Fragster
гуру
30.01.13
✎
13:33
|
(34) да
|
|||
37
Fragster
гуру
30.01.13
✎
13:34
|
(35) и с учетом (34), плз
|
|||
38
Reset
30.01.13
✎
13:41
|
Для одного элемента метод через массив быстрее
Для 10 уже отстает
Для 500 сильно отстает
Если записать текст функций в строку (что выгодно для метода с циклом), метод А ускоряется, но тенденция прежняя. Функция ПолучитьМассивА(Знач Строка,Разделитель) А = Новый Массив(); Пока Истина цикл ПозРазделителя=Найти(Строка,Разделитель); Если ПозРазделителя=0 тогда А.Добавить(Строка); Прервать; КонецЕсли; А.Добавить(Лев(Строка,ПозРазделителя)); Строка=Сред(Строка,ПозРазделителя+1); КонецЦикла; Возврат А; КонецФункции Функция ПолучитьМассивБ(Знач Строка,Разделитель) ПозРазделителя=Найти(Строка,Разделитель); Размерность=СтрЧислоВхождений(Строка,Разделитель)+1; Строка="{""S"","""+СтрЗаменить(Строка,Разделитель,"""},{""S"","""); Б = ЗначениеИзСтрокиВнутр("{""#"",51e7a0d2-530b-11d4-b98a-008048da3034,{"+Формат(Размерность,"ЧГ=")+","+Строка+"""}}}"); Возврат Б; КонецФункции |
|||
39
Fragster
гуру
30.01.13
✎
13:46
|
(38) размерность можно не считать, писать 0 туда
|
|||
40
Fragster
гуру
30.01.13
✎
13:47
|
Формат(Размерность,"ЧГ=") можно заменить на XMLСтрока, если очень хочется ее использовать
|
|||
41
Reset
30.01.13
✎
13:55
|
(37)
Если функцию А переписать с учетом(34)
она работает быстрее на малой размерности, и медленней на "большой" у меня получилось 0,174096 (увеличлось с 0,125626, логично, 1 лишяя операция) 0,583292 (уменьшилось с 0,837312) 71,013895 (увеличилось с 40,954549) |
|||
42
Reset
30.01.13
✎
14:05
|
(39) Если писать размерность 0, то скорость возрастает на 40%-25% (при увеличении р-ра меньше)
|
|||
43
Reset
30.01.13
✎
14:06
|
В общем, эмпирически (25) подтверждается
|
|||
44
Reset
30.01.13
✎
14:07
|
Как я вам в роли негра-испытателя? :D
|
|||
45
Fragster
гуру
30.01.13
✎
14:12
|
(44) норм, главное, чтобы тебе нравилось
|
|||
46
Maxus43
30.01.13
✎
14:13
|
(44) мне больше понравится если в роли негра-работяги будешь. сделай за меня пару задачек, а то лень :)
|
|||
47
Fragster
гуру
30.01.13
✎
14:13
|
вот в v8: Функция СтрПолучитьСтроку еще способ
|
|||
48
Darklight
30.01.13
✎
14:29
|
(44)Респект Резету!
|
|||
49
Darklight
30.01.13
✎
14:29
|
7 бед - один Reset
|
|||
50
Darklight
30.01.13
✎
14:37
|
(44)Ну для чистоты эксперимента ещё и работу через ТекстовыйДокумент потестируй (в тех же условиях испытательного полигона) отсюда (47)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |