powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Интересно ваше мнение...
25 сообщений из 76, страница 2 из 4
Интересно ваше мнение...
    #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
25 сообщений из 76, страница 2 из 4
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Интересно ваше мнение...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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