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

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

Там в каментах приводится код с $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
14.05.2016, 21:31
    #39235856
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация циклов в Cach&#233; Object Script
ну я ,

Зачем использовать устаревший синтаксис?
У меня (тестировал на 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
16.05.2016, 08:16
    #39236238
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация циклов в Cach&#233; Object Script
servitЗачем использовать устаревший синтаксис?
Чтобы легче было переходить на другой М-вариант языка...
...
Рейтинг: 0 / 0
16.05.2016, 08:44
    #39236249
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация циклов в Cach&#233; Object Script
krvsaЧтобы легче было переходить на другой М-вариант языка... другой М-вариант языка = другой продукт со всеми вытекающими последствиями оптимизациями.

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

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

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

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

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

Т.е. while теперь быстрее for без параметров?
...
Рейтинг: 0 / 0
17.05.2016, 00:35
    #39237002
Шваров Евгений
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация циклов в Cach&#233; Object Script
Шваров ЕвгенийТ.е. while теперь быстрее for без параметров?
Я имел ввиду вот эту сентенцию:
Из строки в массив(COS)
...
Рейтинг: 0 / 0
17.05.2016, 08:01
    #39237049
servit
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Оптимизация циклов в Cach&#233; Object Script
Шваров ЕвгенийШваров ЕвгенийТ.е. 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
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Оптимизация циклов в Cach&#233; Object Script / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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