powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Оптимизация циклов в Caché Object Script
11 сообщений из 11, страница 1 из 1
Оптимизация циклов в Caché Object Script
    #39235798
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет!
Смотрите какой пост Тимоти Левитт про оптимизацию for циклов работающих с $piece: читать.

Помоему очень даже.
...
Рейтинг: 0 / 0
Оптимизация циклов в Caché Object Script
    #39235808
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров ЕвгенийСмотрите какой пост <..>Смотрите материалы прошлых лет: 10143911 , 7038333 , 9141885 .
А вариант Александра 7039591 так пока и не был там предложен.
...
Рейтинг: 0 / 0
Оптимизация циклов в Cach&#233; Object Script
    #39235809
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений,

Там в каментах приводится код с $find / $extract, непонятно почему оно должно быть slow
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
init()
 n str,i
 f i=1:1:100 s $p(str,",",i)="12345678901234567890"
 q str
time1 ; k  d time1^timeofpiece
 n string s string=$$init()
 n time s time=$zh
 n i,j,piece
 f j=1:1:10000 d
 . For i=1:1:$Length(string,",") d
 . . Set piece = $Piece(string,",",i)
 w $zh-time,!
 q
time2 ; k  d time2^timeofpiece
 n string s string=$$init()
 n time s time=$zh
 n i,j,piece,pos1,pos2,pos3
 f j=1:1:10000 d
 . s pos1=0,pos2=0 f  s pos3=$f(string,",",pos1) d  q:'pos3
 . . i pos3=0 s pos2=$l(string)+2
 . . e  s pos2=pos3
 . . s piece=$e(string,pos1,pos2-2) s pos1=pos2
 w $zh-time,!
 q
У меня вариант с $f/$e быстрее чем $l/$p примерно в 12 раз.
...
Рейтинг: 0 / 0
Оптимизация циклов в Cach&#233; Object Script
    #39235856
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я ,

Зачем использовать устаревший синтаксис?
У меня (тестировал на 2016.3) разница с ним в ~8 раз, а вот с современным синтаксисом - тоже в ~12 раз.
timeofpiece.mac с новым синтаксисом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
main() public {
  try {
    s old=$system.Process.Undefined(2)
    s N=10000
    s string=$$init(100)
    s t1=$$time1(N,.string)
    s t2=$$time2(N,.string)
    w t1,!,t2,!,t1/t2,!
    
  }catch(ex){
    w "Error: ",ex.DisplayString(),!
  }
  d $system.Process.Undefined(old)
}

init(N) {
  f i=1:1:N s $p(str,",",i)="12345678901234567890"
  q str
}

time1(N,&string) {
  s time=$zh
  f j=1:1:N f i=1:1:$l(string,",") s piece = $p(string,",",i)
  q $zh-time
}

time2(N,&string) {
  s time=$zh
  f j=1:1:N {
    s pos1=0,pos2=0
    do {
      s pos3=$f(string,",",pos1)
      i pos3=0 {
        s pos2=$l(string)+2
      } else {
        s pos2=pos3
      }
      s piece=$e(string,pos1,pos2-2), pos1=pos2
    } while(pos3)
  }
  q $zh-time
}
...
Рейтинг: 0 / 0
Оптимизация циклов в Cach&#233; Object Script
    #39236238
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitЗачем использовать устаревший синтаксис?
Чтобы легче было переходить на другой М-вариант языка...
...
Рейтинг: 0 / 0
Оптимизация циклов в Cach&#233; Object Script
    #39236249
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaЧтобы легче было переходить на другой М-вариант языка... другой М-вариант языка = другой продукт со всеми вытекающими последствиями оптимизациями.

Если сравнивалась скорость не на Caché, а например на GT.M или MiniM, то наверное стоит это упомянуть.
...
Рейтинг: 0 / 0
Оптимизация циклов в Cach&#233; Object Script
    #39236254
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров Евгений ,servitА вариант Александра 7039591 так пока и не был там предложен.Спасибо, теперь предложен. Только стоило упомянуть, что это касается случая, когда в цикле используется счётчик.
Но судя по коду Тимоти, у него цикл холостой, поэтому вряд ли предложенная оптимизация "выстрелит".

Но за ссылку на наш форум - отдельная благодарность.
Ради такого дела, специально для гостей из-за рубежа раскрасил код в старом топике.

PS: может стоит ещё им там ссылку на https://translate.yandex.ru/ предложить?
...
Рейтинг: 0 / 0
Оптимизация циклов в Cach&#233; Object Script
    #39236256
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit другой М-вариант языка = другой продукт со всеми вытекающими последствиями оптимизациями.
Твоими бы устами да меда хлебать!
...
Рейтинг: 0 / 0
Оптимизация циклов в Cach&#233; Object Script
    #39237001
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servit Шваров Евгений ,servitА вариант Александра 7039591 так пока и не был там предложен.Спасибо, теперь предложен. Только стоило упомянуть, что это касается случая, когда в цикле используется счётчик.
Но судя по коду Тимоти, у него цикл холостой, поэтому вряд ли предложенная оптимизация "выстрелит".

Но за ссылку на наш форум - отдельная благодарность.
Ради такого дела, специально для гостей из-за рубежа раскрасил код в старом топике.

PS: может стоит ещё им там ссылку на https://translate.yandex.ru/ предложить?
Предложите, конечно)
Я за взаимную коммуникацию!

Т.е. while теперь быстрее for без параметров?
...
Рейтинг: 0 / 0
Оптимизация циклов в Cach&#233; Object Script
    #39237002
Шваров Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров ЕвгенийТ.е. while теперь быстрее for без параметров?
Я имел ввиду вот эту сентенцию:
Из строки в массив(COS)
...
Рейтинг: 0 / 0
Оптимизация циклов в Cach&#233; Object Script
    #39237049
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шваров ЕвгенийШваров ЕвгенийТ.е. while теперь быстрее for без параметров?
Я имел ввиду вот эту сентенцию:
Из строки в массив(COS) Где об этом там написано?
Результат зависит от того что и как сравнивать. Например сразу за этой "сентенцией" идут тесты Александра и Turk:
Код: plaintext
1.
2.
>s h=$zh,i=1 while($i(i)<=1000000){}  w "w: ",$zh-h
>s h=$zh,i=1 f { q:($i(i)>1000000) }  w "f1: ",$zh-h
>s h=$zh f i=1:1:1000000 {} w "f2: ",$zh-h
, которые наглядно всё показывают.Шваров ЕвгенийПредложите, конечно)
Я за взаимную коммуникацию!Я на других ресурсах теперь только в качестве читателя.
Мне с лихвой хватило хабра.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Оптимизация циклов в Cach&#233; Object Script
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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