powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / СУБД GT.M
23 сообщений из 148, страница 6 из 6
СУБД GT.M
    #37387096
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Аксёнов ,

Я бы поступил следующим образом:
1) в mumps community завёл топик с темой "Performance: MSM vs GT.M";
2) опубликовал законченный код для теста (генерация данных, проход по ним). Если код для этих СУБД отличается, то оба варианта;
3) указал какие параметры СУБД/ОС и с какими значениями были установлены (желательно указать все, отличные от дефолтных);
4) указал параметры железа, версии СУБД/OС;
5) указал полученные результаты в обеих системах: время выполнения, загрузка CPU, кол-во disk I/O и др.
6) и в конце задал бы вопрос: "How to speed up?"
...
Рейтинг: 0 / 0
СУБД GT.M
    #37387114
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ваш кэш, в колонке VIRT:
Код: plaintext
1.
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
  9283  ray        20     0   539m  81m  81m R  96 . 8    4 . 1     0 : 37 . 45  mumps
Причины замедления по сравнению с MSM могут быть разные. В GT.M, например, медленно работают некоторые виды косвенности. Потом, насколько помню, $Query медленная. Но это по сравнению с Cache, с MSM сравнивать не приходилось.
...
Рейтинг: 0 / 0
СУБД GT.M
    #37387666
$q медленный? Ого, у нас всё на нём. Вся логика навигации по глобалям только на нём.
...
Рейтинг: 0 / 0
СУБД GT.M
    #37388268
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$q медленный? Ого, у нас всё на нём. Вся логика навигации по глобалям только на нём.
Честно говоря мы тоже используем $q очень часто, но особых тормозов не заметил.
Очень удобно сразу читать полностью узел, а потом косвенную от него содержимое.
Для нашего редактора глобалов (GUI) на стороне клиента, отправка со стороны сервера GT.M
осуществляется именно этим способом.
Вот только не пробовали сравнивать c другими методами. Может и стоит ... ???
Примерно делаем вот так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ArrayFilter(Var,Filter,Nod,Er) ;Parsing(Filtering) nhe selected Global
 K Nod
 s Nr= 0 
 f dm= 1 : 1  s Var=$Q(@Var) Quit:Var=""  Do
 . If (Var[Filter)!(@Var[Filter) Do
 . . s Nr=Nr+ 1 
 . . s Nod(Nr)=Var_"="_@Var_$c( 13 , 10 )
 Q
 ;
GlbNodes(var,nod,er) ;Load  1000  Global Nodes in array
 f i= 0 : 1 : 1000  s var=$Q(@var) Quit:var=""  Do
 . s nod(i)=var_"="_@var_$c( 13 , 10 )
 Quit
...
Рейтинг: 0 / 0
СУБД GT.M
    #37388698
misha_shar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я в критичном месте переписываю узел с которым надо работать в локаль а уже затем обхожу локаль. Если обработка локалей а для CACHE это так значительно быстрее то это имеет смысл. А вот для GTM не знаю так ли это.
Например:
K bf M bf=^DDD(1,2,3)
а затем уже обрабатываю локаль bf как мне надо.
...
Рейтинг: 0 / 0
СУБД GT.M
    #37388787
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
misha_sharЯ в критичном месте переписываю узел с которым надо работать в локаль а уже затем обхожу локаль. Если обработка локалей а для CACHE это так значительно быстрее то это имеет смысл.
По моему опыту Cache с глобалью работет быстрее, чем с локалью.
По крайней мере, создание и обработка большого временного массива ^||array(...) на порядок быстрее, чем array(...).
...
Рейтинг: 0 / 0
СУБД GT.M
    #37388859
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shumisha_sharЯ в критичном месте переписываю узел с которым надо работать в локаль а уже затем обхожу локаль. Если обработка локалей а для CACHE это так значительно быстрее то это имеет смысл.
По моему опыту Cache с глобалью работет быстрее, чем с локалью.
По крайней мере, создание и обработка большого временного массива ^||array(...) на порядок быстрее, чем array(...).Смотря какая версия Caché используется: Large Local Arrays
Проверил в версии 2011.2.FT1:

  set N=2000000
  
  set t=$ZH
  for i=1:1:N s a(i)=i
  w "time1= ",$ZH-t," s.",!

  set t=$ZH
  for i=1:1:N s ^||b(i)=i
  w "time2= ",$ZH-t," s.",!


Результат (второй запуск):
Код: plaintext
1.
2.
TEST>d ^test
time1= .498635 s.
time2= .540175 s.
...
Рейтинг: 0 / 0
СУБД GT.M
    #37388971
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот с локалью в GT.M мне тоже интересно.
Вот спросить некого !
На форуме что есть comp.lang.mumps , сообщения перебираются за неделю ...
Все ушли на фронт
...
Рейтинг: 0 / 0
СУБД GT.M
    #37389007
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тест что представил servit запустил только первый,
поскольку второй не поддерживается в GT.M

Код: plaintext
1.
2.
3.
4.
Test ;test  
  set N= 2000000 
  Set Start=$Piece($h,",", 2 ) 
  for i= 1 : 1 :N s a(i)=i
  w $Piece($h,",", 2 )-Start_" seconds are executed in GT.M !!!",! 

Показал 1 с. Опять в GT.M не понятно как меньше сек. посмотреть.
$h-меньше 1 с не выдает.
...
Рейтинг: 0 / 0
СУБД GT.M
    #37389352
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servitСмотря какая версия Caché используется: Large Local Arrays
Проверил в версии 2011.2.FT1:
Я давно тестировал версию 2008. Приятный результат в версии 2011 :)
...
Рейтинг: 0 / 0
СУБД GT.M
    #37389502
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ser_shuЯ давно тестировал версию 2008. Приятный результат в версии 2011 :)Такой же неплохой результат должен быть и в версии 2010.2. Ведь согласно ссылке выше улучшение появилось с версии 2010.2.
...
Рейтинг: 0 / 0
СУБД GT.M
    #37389600
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuОпять в GT.M не понятно как меньше сек. посмотреть.
$h-меньше 1 с не выдает.Вот, что я нашёл: Get a timing in milliseconds
Там же по ссылке можно найти ещё один совет:BhaskarProbably best accomplished with a call to gettimeofday() via GT.M's interface to call C functions. But please don't call the OS directly if you want to set a timeout.
...
Рейтинг: 0 / 0
СУБД GT.M
    #37389614
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriuпоскольку второй не поддерживается в GT.M^||b - это приватный глобал процесса, наиболее близкий аналог в GT.M: ^b($job)
...
Рейтинг: 0 / 0
СУБД GT.M
    #37389696
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitВот, что я нашёл: Get a timing in milliseconds
Там же по ссылке можно найти ещё один совет:

Не особенно помогло :)
То 1 сек то 0 сек.
Но факт что скорость присутствует !!!


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Test ;test  
 set count= 1 
 ; or  10000  or  1000000  or ... depends on the your process
 ; get overhead time
 set time1=$p($h,",", 2 )
 for i= 1 : 1 :count do dummy
 ; get process+overhead time
 set time2=$p($h,",", 2 )
 for i= 1 : 1 :count do process
 set time3=$p($h,",", 2 )
 ; compute process time
 write "process time: ",- 2 *time2+time1+time3/count," sec/proc",!
 quit
dummy	quit
process
 set N= 2000000 
  for i= 1 : 1 :N s a(i)=i
quit
...
Рейтинг: 0 / 0
СУБД GT.M
    #37389705
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я еще раз хочу подчеркнуть, что у меня стоит обычная машина, не сервер !!!
...
Рейтинг: 0 / 0
СУБД GT.M
    #37389746
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuЯ еще раз хочу подчеркнуть, что у меня стоит обычная машина, не сервер !!!Я даже не сомневался.
У меня тоже обычный компьютер: Intel Core2 CPU E6700, 2 Gb RAM
...
Рейтинг: 0 / 0
СУБД GT.M
    #37389770
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все тоже самое, только AMD Athlon(tm) II X2 220 Processor ....
...
Рейтинг: 0 / 0
СУБД GT.M
    #37389835
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alexey Maslov^||b - это приватный глобал процесса, наиболее близкий аналог в GT.M: ^b($job)
В Cache конструкция ^||b вместо ^b($job) дает три приятных бонуса:
- буфера практически не сбрасываются на диск
- не журналируется
- после завершения процесса (даже аварийного) не остается грязи в файлах БД, так как пишется в системную CACHETEMP.
(Не в тему, но может пригодится кому в Cache)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
СУБД GT.M
    #38462487
В общем, для истории - свой проект мы запустили на GT.M.
GT.M вполне себе годная.
Вот если бы версия под Windows была, но увы. Остро не хватает.
...
Рейтинг: 0 / 0
СУБД GT.M
    #38462500
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Аксёнов,
А почему именно под Windows, чем Linux как сервер не устраивает ?
Или это в однопользовательской среде запускать?
...
Рейтинг: 0 / 0
СУБД GT.M
    #38462849
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Аксёнов,

а чем MINIM не подходит ?
...
Рейтинг: 0 / 0
СУБД GT.M
    #38463256
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Артём,

История-то как раз пока известна только вам. Может, поделитесь?
...
Рейтинг: 0 / 0
СУБД GT.M
    #38463291
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антон Аксёнов,

извините за опечатку в имени. Обращался к вам. Имел в виду, что если черкнёте пару строк:
- что за проект
- использованные технологии
- ожидаемая/имеющаяся нагрузка
- впечатления... и всё что сочтёте нужным рассказать
- и действительно, чем не угодил Linux?

, многим было бы интересно. Не так уж много стартапов под М в целом и под GT.M в частности.
...
Рейтинг: 0 / 0
23 сообщений из 148, страница 6 из 6
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / СУБД GT.M
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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