|
v7: Что быстрее работает: Цикл или ВыбратьСтроки()? | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
05.10.11
✎
03:36
|
Просто столкнулся, как лучше выбирать элементы - из списка, и делать
Для сч = 1 по мойСписок.РазмерСписка() Цикл Элемент = мойСписок.ПолучитьЗначение(сч); КонецЦикла; или из таблицы значений, методом ВыбратьСтроки()? тз.ВыбратьСтроки(); Пока тз.ПолучитьСтроку() = 1 Цикл Элемент = тз.ПолучитьЗначение(тз.НомерСтроки, 1); КонецЦикла; |
|||
1
Zhuravlik
05.10.11
✎
03:37
|
+ в смысле как быстрее...
|
|||
2
МихаилМ
05.10.11
✎
03:50
|
1 быстрее
|
|||
3
Zhuravlik
05.10.11
✎
03:57
|
Спасибо) а ссылкой не поделитесь с тестированием? Я искал на инфостарте, но что-то не нашел..
|
|||
4
DJ Anthon
05.10.11
✎
03:59
|
а самому слабо потестить?
|
|||
5
Rie
05.10.11
✎
04:02
|
(3) Отладчик. Меню "Отладка". Самый последний пункт.
|
|||
6
Zhuravlik
05.10.11
✎
04:02
|
(4) если бы было не слабо, я бы тему не создавал)) А так, просто если есть велосипед, зачем его изобретать еще раз?
|
|||
7
Zhuravlik
05.10.11
✎
04:03
|
(5) отладчиком еще не научился пользоваться...
|
|||
8
Rie
05.10.11
✎
04:06
|
(7) Тебя с этим поздравить? Или как?
В (5) тебе дана ссылка. Изучай. |
|||
9
МихаилМ
05.10.11
✎
04:13
|
это же 1с
а она как обычно врёт в отладчике используйте _GetprformanceCounter() при размере тз более 300 сторок быстрее выгрузить в списки чем пользоваться тз.ПолучитьЗначение() уж больно тормозной. |
|||
10
Zhuravlik
05.10.11
✎
04:15
|
(9) я уже начал делать)) Спасибо.
|
|||
11
strange2007
05.10.11
✎
04:27
|
(9) Зачем???? Разве там точность????? Для точности лучше использовать GetProcessTimes.
|
|||
12
ЧеловекДуши
05.10.11
✎
05:43
|
Быстрее цикл, т.к. ВЫбратьСтроки, сперва жутко повисает, при очень больших (100000 строк) таблицах.
|
|||
13
ЧеловекДуши
05.10.11
✎
05:45
|
+ Так же СписокЗначений, работает медленней чем ТаблицаЗначений.
Особенно это заметно на команде "НайтиЗначение" |
|||
14
Erhov_egor
05.10.11
✎
06:16
|
1 быстрее точно
|
|||
15
Chai Nic
05.10.11
✎
06:17
|
(13) Они оба поиск производят последовательным перебором. Для быстрого поиска используйте объект ИндексированнаяТаблица из 1с++
|
|||
16
ЧеловекДуши
05.10.11
✎
06:17
|
+ Так же ТаблицаЗначений работает медленней Индексированной Таблицы ;)
|
|||
17
ЧеловекДуши
05.10.11
✎
06:18
|
+(15)Оба или не оба, но СписокЗначений, работает медленней чем ТаблицаЗначений
И это уже доказано ;) |
|||
18
Chai Nic
05.10.11
✎
06:18
|
А если таблица/список заведомо небольшие - делайте по критерию максимальной красивости кода. Вам же самим будет легче в дальнейшем..
|
|||
19
ЧеловекДуши
05.10.11
✎
06:18
|
(0)Теперь можешь делать выводы :)
|
|||
20
ЧеловекДуши
05.10.11
✎
06:19
|
(18)Если 10 элементов, то нет разницы.
|
|||
21
ЧеловекДуши
05.10.11
✎
06:19
|
+ Вернее ты её незаметишь
|
|||
22
dva1c
05.10.11
✎
06:19
|
Быстрее список, чем ТЗ.
(15) 1С++ ТС еще рановато, но изучить не мешает. |
|||
23
ЧеловекДуши
05.10.11
✎
06:20
|
(22)Не буду убеждать, но на личном опыте показало, что СписокЗначений медленней ТЗ :)
|
|||
24
dva1c
05.10.11
✎
06:22
|
(23) а замеры что показывали?
|
|||
25
VladZ
05.10.11
✎
06:39
|
(0) Зачем тебе это?
|
|||
26
VladZ
05.10.11
✎
06:40
|
+25 Как показывает практика, в ресурсоемких задачах потеря времени идет на совсем других вещах...
|
|||
27
dva1c
05.10.11
✎
06:41
|
(26)+1
|
|||
28
Кириллка
05.10.11
✎
06:59
|
палец с хе®ом сравниваете.
|
|||
29
KRV
05.10.11
✎
07:27
|
Самое смешное, когда ищут производительность в списке с тремя элементами, зато потом перебором шерстят все документы со времен Царя Гороха..
|
|||
30
dva1c
05.10.11
✎
07:42
|
(29) перебором? а почему не запросом? )
|
|||
31
dva1c
05.10.11
✎
07:46
|
+(30) по идее, пост адресован (0)
|
|||
32
VladZ
05.10.11
✎
08:26
|
(29) Во-во... Вопрос в сабже без видения общего кода - не более чем чисто академический.
|
|||
33
фобка
05.10.11
✎
09:22
|
Процедура Сформировать()
Lst = CreateObject("ValueList"); For i = 1 To 100000 Do Lst.AddValue(i); EndDo; VT = CreateObject("ValueTable"); VT.InsertColumn("Cnt"); For i = 1 To 100000 Do VT.NewLine(); VT.Cnt = i; EndDo; t1 = _GetPerformanceCounter(); For i = 1 To Lst.GetListSize() Do A = Lst.GetValue(i); EndDo; Message("Цикл по списку: "+(_GetPerformanceCounter() - t1)); t1 = _GetPerformanceCounter(); VT.SelectLines(); While VT.GetLine() = 1 Do A = VT.Cnt; EndDo; Message("Цикл по ТЗ: "+(_GetPerformanceCounter() - t1)); t1 = _GetPerformanceCounter(); For i = 1000 To 20000 Do Lst.FindValue(i); i = i+3; EndDo; Message("Поиск по списку: "+(_GetPerformanceCounter() - t1)); t1 = _GetPerformanceCounter(); For i = 1000 To 20000 Do VT.FindValue(i,0,"Cnt"); i = i+3; EndDo; Message("Поиск по ТЗ: "+(_GetPerformanceCounter() - t1)); КонецПроцедуры Результат: Цикл по списку: 502 Цикл по ТЗ: 717 Поиск по списку: 9690 Поиск по ТЗ: 8234 |
|||
34
aka MIK
05.10.11
✎
09:24
|
те же яйца )
|
|||
35
Chai Nic
05.10.11
✎
11:01
|
(29) Теплый ламповый перебор не сравнится ни с какими богомерзкими черными запросами. К прямым запросам 1с++ сие не относится..
|
|||
36
Lexxxxx
05.10.11
✎
14:07
|
(33) Ну так а почему не
Procedure ... EndProcedure ? :) |
|||
37
VladZ
05.10.11
✎
14:19
|
(36) Видимо эта часть кода сгенерирована автоматически. :)
|
|||
38
Lexxxxx
05.10.11
✎
14:21
|
(37) И не лень ему было языки переключать?! Взял бы, как тру программер, и перековеркал шаблоны на английский! :)
|
|||
39
Кириллка
06.10.11
✎
08:11
|
(33)справедливости ради: (0) проход по ТЗ предлагал малость другой.
|
|||
40
фобка
06.10.11
✎
08:48
|
(38)ленивый программист - плохой программист. заметил что среди одинесниковтаких подавляющее большинство. :)
(39) конечно, в (0) еще медленнее |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |