powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Интересно ваше мнение...
76 сообщений из 76, показаны все 4 страниц
Интересно ваше мнение...
    #35230280
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно ваше мнение... Вот тут вышла дискуссия у меня с молодежью. На предмет "что лучше"?
Задачка - пробежаться по узлам некой переменной
Вот мой вариант
Код: plaintext
1.
2.
3.
4.
 s uz=$o(^tmp(""))
 while uz'="" {
    d PROC
    s uz=$o(^tmp(uz))
 }
Вот т.с. альтернативный
Код: plaintext
1.
2.
3.
4.
5.
 s uz=""
 f  {
    s uz=$o(^tmp(uz))
    q:uz=""
    d PROC
 }
Кто бы какой вариант предпочел? Может еще какой кто покажет?
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230311
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
s uz="" f  s uz=$o(^tmp(uz)) q:uz=""  d PROC
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230347
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я , этот вариант мы применяем еще с MSM... Но молодеж меня критикует за т.с. архаичность. Типа старый синтаксис и все такое...
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230385
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да Вы плюньте... мне лично такая "архаичность" более понятна. А если вложенность - 10-15 уровней, что они с этими скобками делать будут?
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230425
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ceshkaда Вы плюньте...
Это не научный подход.
ceshkaА если вложенность - 10-15 уровней, что они с этими скобками делать будут?
У нас такого нет. Все "вложения" только как в примерах выше...
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230458
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда я за первый вариант
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230477
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по мне так первый лучше, он в стиле языков объектно-ориентированного программирования.

такой цикл как во втором варианте слишком уж по древнему, когда я в технаре еще учился так писать было не "этично", но такой тип цикла прижился с времен MSM. поробуй на VB2005 такой накатай будет как минимум "неудобно" в глаза профессионалам смотреть
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230482
хрень полная эти ваши скобки
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230489
s uz="" f s uz=$o(^tmp(uz)) q:uz="" d
. PROC
. q



вот самый идеальный вариант на мой взгляд...
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230530
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
скобки обрабатываются быстрее чем точки
прошлогодняя школа
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230563
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С применением "точек" я борюсь уже лет 10.
В своей конторе почти победил, их используют только ленивые и не сознательные... Но я не теряю надежды "добить" и их.
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230602
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я 1,5 года на Cache и никак не могу привыкнуть к "точкам"
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230620
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007скобки обрабатываются быстрее чем точки

насколько именно и почему, не знаете?
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230679
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на самой школе меня не было
передал коллега который там был
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230775
ну если блюсти стиль то скобки конечно элегантнее, чем точки

а по теме: первый вариант...но если много вложенных while'ов уже нагромождение какое то получается...
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35230909
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
усли грамотно использовать функции и процедуры то можно избежать нагромождения
у меня больше двух вложенных циклов не бывает
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231125
krvsaС применением "точек" я борюсь уже лет 10.


интересно.. какая альтернатива ? что может быть лучше вложений ? уровней ? эти ваши "скобки" ?
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231129
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пара скобок
и нужные процедуры или функции
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231140
омский мампсерs uz="" f s uz=$o(^tmp(uz)) q:uz="" d
. PROC
. q



вот самый идеальный вариант на мой взгляд...


s uz="" f s uz=$o(^tmp(uz)) q:uz="" d
. D PROC
. q

пропустил Do PROC



прошу прощения http://www.sql.ru/forum/images/smoke.gif
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231252
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007скобки обрабатываются быстрее чем точки
прошлогодняя школа

Да ??? раньше другое вроде говорорили
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231256
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaИнтересно ваше мнение... Вот тут вышла дискуссия у меня с молодежью. На предмет "что лучше"?
Задачка - пробежаться по узлам некой переменной
Вот мой вариант
Код: plaintext
1.
2.
3.
4.
 s uz=$o(^tmp(""))
 while uz'="" {
    d PROC
    s uz=$o(^tmp(uz))
 }
Вот т.с. альтернативный
Код: plaintext
1.
2.
3.
4.
5.
 s uz=""
 f  {
    s uz=$o(^tmp(uz))
    q:uz=""
    d PROC
 }
Кто бы какой вариант предпочел? Может еще какой кто покажет?
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

Лучшим считаю второй вариант - ибо при изменении или аудите кода нужно будет проверить один $order, а не два как в первом варианте
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231349
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007скобки обрабатываются быстрее чем точки
прошлогодняя школа
Чушь. Быстрее точек обрабатывается только цикл в одну строчку
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231356
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007скобки обрабатываются быстрее чем точки
прошлогодняя школа
Чушь. Быстрее точек обрабатывается только цикл в одну строчку
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231495
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa ceshkaда Вы плюньте...
Это не научный подход.

А "научный подход", это когда скорость выполнения программы оптимизируется
железом? Тогда да, конечно, "архаично". К тому же while - структура "липовая".
Сие означает, что это надстройка над M его же средствами. Ни о чем не говорит? :)
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231526
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую.

Для меня однозначно второй вариант лучше. Причины две:

1) $order пишем только один раз, меньше вероятность ошибок
2) Часто бывают ситуации, когда обработку части узлов массива нужно пропустить.

Например:

s uz=$o(^tmp(""))
while uz'="" {
//Тут чегото накодили
if condition continue // Тут часть узлов отсеяли
d PROC
s uz=$o(^tmp(uz))
}

Что мы в итоге получаем? Правильно, бесконечный цикл при срабатывании условия
condition. Хорошо если кто-нибудь протестирует случай с отсеиванием узлов,
практика показывает, что могут и не протестировать. Получается, писать придется так:

s uz=$o(^tmp(""))
while uz'="" {
//Тут чегото накодили
if condition {
s uz=$o(^tmp(uz))
continue // Тут часть узлов отсеяли
}
d PROC
s uz=$o(^tmp(uz))
}

А это уже изврат.

Поэтому у себя используем только for. Злобные докуметаторы из интерсистемса,
кстати, везде используют while.

=Сергей Шутов (logist)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231535
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый случай лучше тем, что в самом начале цикла сразу видно, куда и как идем:
авторs uz=$o(^tmp(""))
А во втором нужно искать ниже, что затрудняет прочтение.

Однако в плане проверки условий выхода/пропуска узлов второй вараинт однозначно лучше (Это то, что говорил logist)
Поэтому первый способ применяю в простых циклах, а второй в сложных.

Лично мне безаргументный for не нравится (просто не нравится), поэтому вместо могу написать авторwhile 1

Да, и еще опять же лично меня коробят скобки, которые начинаются и заканчиваются неизветно где, поэтому я пишу скобки с обступам по 4 пробела. Намного более читабельной становится программа.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231557
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

> поэтому я пишу скобки с обступам по 4
> пробела. Намного более читабельной становится программа.
Это как?

=Сергей Шутов (logist)
ООО Димас, Хабаровск
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231566
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я пишу так (в случае первого варианта)
Код: plaintext
1.
2.
3.
4.
5.
 s uz=$o(^tmp("")) 
 while uz'="" 
     {d PROC
      s uz=$o(^tmp(uz))
     }

А если скобка начинается в середите строки, то в этой же строке она и должна закрыться.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231622
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Особых преимуществ не вижу, а вот Tab и Shift-tab на выделении работать не будут...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231664
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В некоторых случаях отступ ломается, например при экспорте-импорте в каше 4, или разных настройках редактора (разные размеры таба)

В при моем способе написани код остается читаемым в любом случае.
+ вопрос привычки, мне скобки воспринимать в середине строки тяжело, но я встречал людей, которым не нравится мой способ написания кода (хотя так и непонятно, почему).

сравните
Код: plaintext
1.
2.
3.
4.
s uz=$o(^tmp("")) 
while uz'="" 
{d PROC
s uz=$o(^tmp(uz))
}

Код: plaintext
1.
2.
3.
4.
s uz=$o(^tmp("")) 
while uz'="" {
d PROC
s uz=$o(^tmp(uz))
}

Еще видел код типа, если ломается форматировние, уровнь скобок >2 и объем кода >1 страницы - вообще атас.
Код: plaintext
1.
2.
3.
s uz=$o(^tmp("")) 
while uz'="" {d PROC
s uz=$o(^tmp(uz))
}


А почему не будет работать tab, shift-tab?
И чем все-таки мой способ хуже вашего? Я свое объяснение предпочтений привел ;-)
Кстати, так я форматировать код стал задолго до знакомства каше и пока не вижу аргументов переучиваться.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35231672
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, признаю код типа этого
Код: plaintext
s uz="" f  s uz=$o(^tmp(uz)) q:uz=""  d PROC
Хотя сама строка воспринимается тяжелее, но за счет компактности в целом программа может смотреться намного лучше, чем при развернутой записи.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232154
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
омский мампсеринтересно.. какая альтернатива ?
Использование процедур
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232167
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logist //Тут чегото накодили
if condition continue // Тут часть узлов отсеяли
Такие конструкции у нас не применимы. Для этого есть процедура PROC - в ней все и делайте...
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232237
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Искусственное и надуманное раздергивание на процедуры иногда бывает хуже сложного текста.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232288
фома
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei Obrastsov Ymka2007скобки обрабатываются быстрее чем точки
прошлогодняя школа
Чушь. Быстрее точек обрабатывается только цикл в одну строчку

Профильнул такой код:
фома
TestSpd
d block
d parentheses
d while
d line
q
parentheses
n tn,count s tn="",count=0
f
{
s tn=$o(^|"KDRKDR"|ZSTV1(tn))
q:tn=""
s:$d(^|"KDRKDR"|ZSTV1(tn,"U")) count=count+1
}
q
block
n tn,count s tn="",count=0
f s tn=$o(^|"KDRKDR"|ZSTV1(tn)) q:tn="" d
.s:$d(^|"KDRKDR"|ZSTV1(tn,"U")) count=count+1
q
while
n tn,count s tn=$o(^|"KDRKDR"|ZSTV1("")),count=0
while tn'=""
{
s:$d(^|"KDRKDR"|ZSTV1(tn,"U")) count=count+1
s tn=$o(^|"KDRKDR"|ZSTV1(tn))
}
q
line
n tn,count s tn="",count=0
f s tn=$o(^|"KDRKDR"|ZSTV1(tn)) q:tn="" s:$d(^|"KDRKDR"|ZSTV1(tn,"U")) count=count+1
q


Перед профилированием несколько раз запустил. Результат:
фома
Routine Line RtnLine Time TotalTime Code
TestSpd 1 2 0.000009 0.000009 TestSpd ; Compiled April 3, 2008 11:25:34
2 2 0.00001 0.348848 d block
3 2 0.000011 0.349198 d parentheses
4 2 0.00001 0.345024 d while
5 2 0.000009 0.179140 d line
6 2 0.000016 0.000016 q
7 2 0.000003 0.000003 parentheses
8 2 0.000008 0.000008 n tn,count s tn="",count=0
9 2 0.000004 0.000004 f
10 0 0 0.000000 {
11 33032 0.106221 0.106221 " s tn=$o(^|""KDRKDR""|ZSTV1(tn))"
12 33032 0.052522 0.052522 " q:tn="""""
13 33030 0.187058 0.187058 " s:$d(^|""KDRKDR""|ZSTV1(tn,""U"")) count=count+1"
14 33030 0.053743 0.053743 }
15 2 0.000012 0.000012 q
16 2 0.000004 0.000004 block
17 2 0.000008 0.000008 n tn,count s tn="",count=0
18 2 0.11131 0.111310 f s tn=$o(^|"KDRKDR"|ZSTV1(tn)) q:tn="" d
19 33030 0.187116 0.187116 .s:$d(^|"KDRKDR"|ZSTV1(tn,"U")) count=count+1
20 2 0.000011 0.000011 q
21 2 0.000004 0.000004 while
22 2 0.000027 0.000027 n tn,count s tn=$o(^|"KDRKDR"|ZSTV1("")),count=0
23 2 0.000006 0.000006 while tn'=""
24 0 0 0.000000 {
25 33030 0.184975 0.184975 " s:$d(^|""KDRKDR""|ZSTV1(tn,""U"")) count=count+1"
26 33030 0.104489 0.104489 " s tn=$o(^|""KDRKDR""|ZSTV1(tn))"
27 33030 0.055496 0.055496 }
28 2 0.000014 0.000014 q
29 2 0.000004 0.000004 line
30 2 0.000008 0.000008 n tn,count s tn="",count=0
31 2 0.179096 0.179096 f s tn=$o(^|"KDRKDR"|ZSTV1(tn)) q:tn="" s:$d(^|"KDRKDR"|ZSTV1(tn,"U")) count=count+1
32 2 0.000021 0.000021 q
Totals for TestSpd 264288 1.222225 NA


Итого: (если сложить время выполнения строк, входящих в цикл)
block 0.298426
parentheses 0.399548
while 0.344993
line 0.179096

Результат удивил: до теста был уверен, что структура со скобками должна работать быстрее (т.к. не используется команда do), а на деле...

2 Sergei Obrastsov: а есть объяснение почему так? (кроме количества строк в теле цикла)
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232293
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н. , тут уже каждый решает сам.

Если ты заметил мы и скобки стобой используем по-разному...
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232389
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Насчет профилировки:
1.Начало строки - это оператор в байт коде М, так что он на самом деле вносит задержки (правда ты что-то слишком много)
2.Очень большие задержки вносит профилировщик
3. Все это ерунда, потому что все равно узким местом каше-систем будет дисковая подсистема.

автортут уже каждый решает сам.
Несомненно :-)
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232397
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
фомаРезультат удивил: до теста был уверен, что структура со скобками должна работать быстрее (т.к. не используется команда do), а на деле...

2 Sergei Obrastsov: а есть объяснение почему так? (кроме количества строк в теле цикла)
Я же написал уже - что while , что скобки - структуры "липовые", надстройки сверху.
Попытайтесь себе представить как бы вы это реализовали стандартными командами M и будьте
уверены, что так оно и сделано. Ну, почти так, за редким исключением. А do , кстати
срабатывает быстро, гораздо быстрее скобок. Что же касается блока, то тут все просто, exec сразу начинает
работать со следующей строкой.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232421
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про быстродействие скажу так... Меня больше волнует "быстродействие" программера как разработчика ПО. А особено при модернизации оного ПО... Т.к. если текст программ будет "не читабелен" - на его разбор и модернизацию уйдет много времени.
Вот вам антипример кода

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 S (cik,i)= 0 ,zav=$O(^K("BU","ZAV",Sbuk_$C( 31 )),- 1 ) F  S zav=$O(^K("BU","ZAV",zav)) Q:zav=""!((cik> 199 )&(Sbuk'["*"))  S ur="" F  S ur=$O(^K("BU","ZAV",zav,ur)) Q:ur=""  W /CUP(2,1),i D
 . S i=i+1
 . Q:$G(^D(ur,"URID_LIC",1))=""
 . Q:($G(^D(ur,"URID_LIC",1))'=Vpl)&(Vpl'=0)
 . S nazv=$G(^D(ur,"PREDPR",1)," ")
 . S sum=0,mg="" F  S mg=$O(^D(ur,"FOND_ZAR",mg)) Q:mg=""  I $G(^D(ur,"GOD",mg))=Gd,$G(^D(ur,"KVARTAL",mg))'<nkv,$G(^D(ur,"KVARTAL",mg))'>kkv S sum=sum+$$Pr^AD($G(^D(ur,"FOND_ZAR",mg)))
 . S $P(^F($ZZU,"Dn",nazv,ur),"|",2)=$S(sum:sum,1:"")
 . S mg="",sum=0 F  S mg=$O(^D(ur,"SYMMA_OT",mg)) Q:mg=""  D
 .. Q:'(blsch[(":"_+$G(^D(ur,"BAL_SCH",mg))_":"))
 .. S fl= 0  I $G(^D(ur,"GOD_OT1",mg))=Gd F j= 1 : 1 : 6  I $D(^D(ur,"MES_OT"_j,mg)),$G(^D(ur,"MES_OT"_j,mg))'<nm,$G(^D(ur,"MES_OT"_j,mg))'>km S sum=$S($G(^D(ur,"VID_PLAT",mg))= 2 :- 1 , 1 : 1 )*$$Pr^AD($G(^D(ur,"SYMMA_OT",mg))),fl= 1 
 .. I fl S $P(^F($ZZU,"Dn",nazv,ur),"|", 1 )=$P(^F($ZZU,"Dn",nazv,ur),"|", 1 )+sum
 .. S fl= 0  I $G(^D(ur,"GOD_OT2",mg))=Gd F j= 7 : 1 : 12  I $D(^D(ur,"MES_OT"_j,mg)),$G(^D(ur,"MES_OT"_j,mg))'<nm,$G(^D(ur,"MES_OT"_j,mg))'>km S sum=$S($G(^D(ur,"VID_PLAT",mg))= 2 :- 1 , 1 : 1 )*$$Pr^AD($G(^D(ur,"SYMMA_OT",mg))),fl= 1 
 .. I fl S $P(^F($ZZU,"Dn",nazv,ur),"|", 1 )=$P(^F($ZZU,"Dn",nazv,ur),"|", 1 )+sum
 . S $P(^F($ZZU,"Dn",nazv,ur),"|", 3 )=$S(($P($G(^F($ZZU,"Dn",nazv,ur)),"|", 1 )-($P($G(^F($ZZU,"Dn",nazv,ur)),"|", 2 )* 0 . 02 )):($P($G(^F($ZZU,"Dn",nazv,ur)),"|", 1 )-($P($G(^F($ZZU,"Dn",nazv,ur)),"|", 2 )* 0 . 02 )), 1 :"")
 . K:('$P(^F($ZZU,"Dn",nazv,ur),"|",3))!('$P(^F($ZZU,"Dn",nazv,ur),"|", 2 )) ^F($ZZU,"Dn",nazv,ur)
 . S:$D(^F($ZZU,"Dn",nazv,ur)) cik=cik+ 1 
 D ^ASOB("P:            ")
 S zav=""
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232449
Фома
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Насчет профилировки:
1.Начало строки - это оператор в байт коде М, так что он на самом деле вносит задержки (правда ты что-то слишком много)


1. Меньше строк - быстрее цикл, а читабельность кода хуже, как быть?
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232484
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фома , как было уже замечено ранее, все будет тормозить HDD. Т.ч. я за читабельность текстов программ.
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232509
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, стоит оптимизировать логику программы, особенно обращения к базе данных.
Спихивание кода в одну строку - очень плохой способ ускорения программы
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232643
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Фома , как было уже замечено ранее, все будет тормозить HDD. Т.ч. я за читабельность текстов программ.

Прошлый раз смолчал, сейчас не буду уже.
Откуда такие мыслишки, если не секрет? Есть какие-то конкретные выкладки?
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232662
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei ObrastsovОткуда такие мыслишки, если не секрет?
Так личные соображения...
Sergei ObrastsovЕсть какие-то конкретные выкладки?
Нет...
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232733
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Sergei ObrastsovОткуда такие мыслишки, если не секрет?
Так личные соображения...
Sergei ObrastsovЕсть какие-то конкретные выкладки?
Нет...
Жаль. Тогда все это голословно. Я еще пойму, если будут претензии к чтению из файла,
тут Cache явно не на высоте. А остальное меня устраивает пока.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232837
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei ObrastsovТогда все это голословно.
Тесты показывают следующий рейтинг
1. В одну строчку
2. Точки
3. Процедурный подход
Но если начать читать даные из БД и в нее же писать (а мы только этим и занимаемся). Скорость обработки упадет у всех вариантов. И это мизерная разница между 3-мя вариантами будет уже не так важна как некие способы ускорения чтения даных и их запись.
Вот я о чем.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232864
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Sergei ObrastsovТогда все это голословно.
Тесты показывают следующий рейтинг
1. В одну строчку
2. Точки
3. Процедурный подход
Но если начать читать даные из БД и в нее же писать (а мы только этим и занимаемся). Скорость обработки упадет у всех вариантов. И это мизерная разница между 3-мя вариантами будет уже не так важна как некие способы ускорения чтения даных и их запись.
Вот я о чем.
Насколько я понял, с БД вы работаете "классовыми" методами, так что скорость вы теряете именно на них, сами программы здесь особо не причем. Речь шла, естественно, об идеальном
варианте работы программы, которая не заморачивается на внешние устройства. А если цеплять
сверху все то, что нынче так модно, то можно конечно и не страдать по поводу "while", разницы
не будет.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232901
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Классовое хранение используем только в новых задачах. Основной движок использует свое хранение.
А про идеал я никогда и не спорил... Все давно протестили еще на MSM.
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232914
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaКлассовое хранение используем только в новых задачах. Основной движок использует свое хранение.
А про идеал я никогда и не спорил... Все давно протестили еще на MSM.

MSM - плохой критерий, не стоит его упоминать. Это Cache 1.0 делали из него.
Пока не купили DataTree. Так вот, на MSM все несколько по-другому считалось.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232932
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто у меня мнение поподходу программирования сложились. Да и временем они хорошо проверены...
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35232967
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaКлассовое хранение используем только в новых задачах. Основной движок использует свое хранение.
Значит надо смотреть что с движком. Серьезно, я на обычной рабочей машинке в 800 Mhz, памятью 128 и IDE винтом в 40Gb разбрасываю 1 миллион записей (индексы + данные) за 20-30 секунд.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233002
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei Obrastsov , ты думаеш у нас все долго считается? Когда запрос/форма/расчет выполняется не более чем за 5 минут, мало кого волнует как написан текст программы...
А вот когда ведется расчет показателей для статистики (что-то там тыщами штук меряется), да по областной БД! А это, надо сказать, писали приверженцы точек и не стандартного хранеия данных в классах (для пущего ускорения)...
Там расчет запускают "на ночь". И не думаю, что на точках они там получили большое ускорение...
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233051
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei Obrastsov krvsa Фома , как было уже замечено ранее, все будет тормозить HDD. Т.ч. я за читабельность текстов программ.

Прошлый раз смолчал, сейчас не буду уже.
Откуда такие мыслишки, если не секрет? Есть какие-то конкретные выкладки?

Практика. Так как БД используется как правило для хранения очень большого числа данных, то при одновременной работе хотя бы сотни пользователей, какие бы вы дисковые системы не ставили, все равно будет висеть на нем родном.

А на проце будет висеть только если на слабой машине и с маленьким объемом данных работает 1-2 человека. Но при чем тогда тут оптимизация точки-скобки?

Вы действительно считаете, что при выборке из 200Гб базы (а ведь это даже не так уж много) главная проблема будет в проце?
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233063
ceshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa
Там расчет запускают "на ночь". И не думаю, что на точках они там получили большое ускорение...

интересно было бы узнать за сколько времени тоже самое сделали бы "традициооные" СУБД. Что-то не слышал, чтоб в SQL сутками получали отчеты, а здесь - сплошь и рядом, и это при всем быстродействии Каше. Может дело именно в программистах?
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233098
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Вы действительно считаете, что при выборке из 200Гб базы (а ведь это даже не так уж много) главная проблема будет в проце?
Главная проблема будет в структуре БД и программах, а также размере кэша, ну и проценте
попадания туда нужных блоков, что опять приводит нас к структуре.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233111
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу. Структуры+алгоритмы. А точки-скобки не дадут и доли процента скорости, я думаю
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233122
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaты думаеш у нас все долго считается?
А вот когда ведется расчет показателей для статистики (что-то там тыщами штук меряется), да по областной БД! А это, надо сказать, писали приверженцы точек и не стандартного хранеия данных в классах (для пущего ускорения)...
Там расчет запускают "на ночь". И не думаю, что на точках они там получили большое ускорение...

Вот теперь думаю, что ОЧЕНЬ долго. Тыщи штук? Где-то очень большие косяки в БД. Это не
пример неудачного использования подхода к программированию, только к структурированию БД.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233123
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут рассуждать можно долго...

ceshka , х/з как бы себя повели "традиционые" СУБД... Я даже не разрабатывал ту задачу... Но самое прикольное (для меня), что ее делали наши т.с. "ускорители".
Я-то приверженец самого "медленого" (процедурного) подхода.
----------
Cache for Windows (Intel) 2007.1 (Build 369) Fri Jun 15 2007 15:25:42 EDT
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233131
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторинтересно было бы узнать за сколько времени тоже самое сделали бы "традициооные" СУБД. Что-то не слышал, чтоб в SQL сутками получали отчеты, а здесь - сплошь и рядом, и это при всем быстродействии Каше. Может дело именно в программистах?

Как вы могли бы уже заметить хотя бы по этому же топику, каше предостявляет множество способов сделать одно и то же разными способами. В том числе наворотить такого, чего наворотить на другой СУБД ну просто не представляется возможным

Ну то есть именно то, что вы и имеете ввиду: да, дело в программистах.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233134
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei ObrastsovТыщи штук?
Это количество показателей меряется тыщами. А картотек и записей вних конечно гораздо больше...
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233139
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.да, дело в программистах.
Абсолютно точно!
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233216
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Sergei ObrastsovТыщи штук?
Это количество показателей меряется тыщами. А картотек и записей вних конечно гораздо больше...
А конкретней? Миллионы? Десятки миллионов?
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233229
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Угу. Структуры+алгоритмы. А точки-скобки не дадут и доли процента скорости, я думаю
Не надо думать, что "точки-скобки" не играют роли. Особенно когда это дело гоняется циклом
на баальшой куче данных. Вон как у krvsa .
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233240
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei ObrastsovА конкретней? Миллионы? Десятки миллионов?
Да кто их считал...
Сами-то картотеки ограничиваются 100 тысяч карточек, но вних есть подтаблицы, которые связаны с другими таблицами и т.п...
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233277
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Sergei ObrastsovА конкретней? Миллионы? Десятки миллионов?
Да кто их считал...
Сами-то картотеки ограничиваются 100 тысяч карточек, но вних есть подтаблицы, которые связаны с другими таблицами и т.п...
Плохо, что не считали. Мне бы хотелось оценить объемы. У меня всего лишь 100 млн. база,
с которой можно сделать все что угодно в пределах... ну не знаю, минут 20 наверно.
Потому и спрашиваю.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233289
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei ObrastsovМне бы хотелось оценить объемы.
Не получится... У вас ведь свое хранение данных, у нас свое... Да и задачи ваши и наши БД решают разные...
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233301
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Sergei ObrastsovМне бы хотелось оценить объемы.
Не получится... У вас ведь свое хранение данных, у нас свое... Да и задачи ваши и наши БД решают разные...
А это неважно. Я ведь не сравниваю структуры и задачи. Я сравниваю объемы. :)
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233323
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei ObrastsovЯ сравниваю объемы. :)
Этого не достаточно...
В таблице можно хранить:
- "длиные" поля - она будет большего объема
- много записей (например поступившие платежи на телефоны) - она будет большей по количеству записей

Но особого "анализа" таких таблиц не сделаеш. Либо он и не требуется...
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233338
Sergei Obrastsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa Sergei ObrastsovЯ сравниваю объемы. :)
Этого не достаточно...
В таблице можно хранить:
- "длиные" поля - она будет большего объема
- много записей (например поступившие платежи на телефоны) - она будет большей по количеству записей
Но особого "анализа" таких таблиц не сделаеш. Либо он и не требуется...
Ну почему же? Вы даже не представляете сколько информации идет по телефонным звонкам
к примеру. И все это можно и нужно анализировать. :)
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35233350
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergei ObrastsovВы даже не представляете сколько информации идет по телефонным звонкам
Я с этим и не спорю... Просто привожу примеры т.с. "простых" таблиц с большими объемами.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35234364
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уж не знаю как там с скобками vs точки - но вот количество строк (Антон Умников 2000й год) на скорость "влияет" - а скобки они того в код фигачать лишние строки
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35234366
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Другой вопрос конечно же что более ценно время программиста или скорость выполнения программы - скобки думаю, не сильно тут главную роль играют
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35246910
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PtnУж не знаю как там с скобками vs точки - но вот количество строк (Антон Умников 2000й год) на скорость "влияет" - а скобки они того в код фигачать лишние строки

В то время (Антон Умников 2000й год) приводился аргумент, что во время формирования объектоного кода (пи-кода) строки с точками так и обрабатываются как отдельные строки исходного кода, а строки со скобками по возможности преобразовываются в одну строку пи-кода.

Трудно сказать, насколько эта оптимизация кода в действительности происходит, но звучит красиво.
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35246985
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понятны - спасибо :)
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35247030
MX -- ALEX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ser_shu PtnУж не знаю как там с скобками vs точки - но вот количество строк (Антон Умников 2000й год) на скорость "влияет" - а скобки они того в код фигачать лишние строки

В то время (Антон Умников 2000й год) приводился аргумент, что во время формирования объектоного кода (пи-кода) строки с точками так и обрабатываются как отдельные строки исходного кода, а строки со скобками по возможности преобразовываются в одну строку пи-кода.

Трудно сказать, насколько эта оптимизация кода в действительности происходит, но звучит красиво.

По нашей MX-технологии получется так, что отдельные строки m-кода,
сидящие в отдельных ячейках EXCEL,
перед исполнением автоматом сшиваются в одну длиннющую m-строку,
то есть динамически , вариантно, строится большая строка-программа c вложенными циклами,
после чего эта строка посылается на сервер Cache/MSM для исполнения.

Случайно выяснилось , что, вопреки опасениям, такая авто-сшивка
заметно повысила скорость работы - например, тупое перелопачивание
100 000 записей длиной по 50-100 байт идет 5 сек против 10 сек
по традиционной - многострочной - программе.

Вероятно, потому, что компилируется один раз ?
...
Рейтинг: 0 / 0
Интересно ваше мнение...
    #35247403
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну ... насколько я помню из объяснений (а это было во время 4.x версий) - дело в том что у P-машины - есть такая инструкция - переход на следующую строку - и она соответсвенно выполняется...

Если у вас программа в пять строк - то пять раз выполняться это инструкция - вне зависимости от того - есть в строках другие инструкции или нет.

PS: за что купил за то и продаю
...
Рейтинг: 0 / 0
76 сообщений из 76, показаны все 4 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Интересно ваше мнение...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]