AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.08.2007, 11:22   #21  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от mazzy Посмотреть сообщение
Чистый Пролог никогда не умел работать с БД. Особенно с реляционными. В реляционных БД очень тяжело реализуется концепция отката, которая используется для перебора вариантов.

Пролог - сугубо спискоориентированный язык.
Чистый не умел, но это и не важно. Важно то, что функциональное программирование отличает не то, как хранятся данные, а то, как происходят вычисления.
Старый 10.08.2007, 11:24   #22  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
http://www.gprolog.org/
Цитата:
# MySQL/Prolog - an interface to MySQL database
# ODBC/Prolog - a small ODBC interface module for gprolog
Хотя тут можно поспорить о "чистоте" реализации
Старый 10.08.2007, 11:26   #23  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
я бы попробовал еще этот способ
Старый 10.08.2007, 11:30   #24  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
я бы попробовал еще этот способ
ты это серьезно ?
Старый 10.08.2007, 11:39   #25  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Ага. Мне кажется, эти мепы и редюсы внутри x++ не стоит того.

А вот написать что-нибудь интеллектуальное на Haskell (всякие там трасформации исходников, например), а потом поиспользовать...
Старый 10.08.2007, 11:41   #26  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
А вот написать что-нибудь интеллектуальное на Haskell (всякие там трасформации исходников, например), а потом поиспользовать...
Проблема деплоймента dll-ок.
Старый 10.08.2007, 11:42   #27  
Ilia# is offline
Ilia#
Участник
 
23 / 10 (1) +
Регистрация: 15.11.2005
Цитата:
Сообщение от mazzy Посмотреть сообщение
Чистый Пролог никогда не умел работать с БД. Особенно с реляционными. В реляционных БД очень тяжело реализуется концепция отката, которая используется для перебора вариантов.

Пролог - сугубо спискоориентированный язык.
Пролог (Турбо, Visual) включает в себя собственную СУБД (External Database System).
А работа с цепочками записей (db_chains) в чем-то сходна с работой в СУБД ADABAS.
Старый 10.08.2007, 11:47   #28  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Андре Посмотреть сообщение
Проблема деплоймента dll-ок.
Ну, я планирую для инструментальных вещей поиспользовать (хочется встоить простенький sql profiler)
Старый 10.08.2007, 11:51   #29  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Ну, я планирую для инструментальных вещей поиспользовать (хочется встоить простенький sql profiler)
Круто...... Если получится, расскажешь?

p.s. И мне еще говорят "что у меня много свободного времени"......
Старый 10.08.2007, 12:10   #30  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Андре Посмотреть сообщение
Круто...... Если получится, расскажешь?
Знакомый делает для BAAN. Я немного перетачиваю под MS SQL - но там еще долгий путь.
Старый 10.08.2007, 12:20   #31  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ilia# Посмотреть сообщение
Пролог (Турбо, Visual) включает в себя собственную СУБД (External Database System).
только не надо приводить turbo prolog в качестве примера.
в нем и типы были.
__________________
полезное на axForum, github, vk, coub.
Старый 10.08.2007, 12:54   #32  
otkudao
Гость
 
n/a
это не наш пролог. В нем рыбу заворачивали
Старый 10.08.2007, 15:11   #33  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
кстати, py3к dct бутед работать с итераторами а не списками, может и тут так сделать?

типа
X++:
select EmplTable;
xml = '<records>' + join(map(new CursorEnumerator(EmplTable), 'x.xml()')) + '</records>';
Старый 11.08.2007, 19:34   #34  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
На досуге (сижу в субботу на работе) решил добить до конца тестирование скорости выполнения различных операций вставки значений в контейнер.

Вот Job, с помощью которого замерялась скорость выполнения.
X++:
#define.LoopCount(50000)
#LocalMacro.Start
    timeBefore = WinApi::getTickCount();
#EndMacro
#LocalMacro.Reset
    timeAfter = WinApi::getTickCount();
    info(num2str((timeAfter - timeBefore) /1000, 0, 4, 2, 0));
    con = conNull();
    len = 1;
#EndMacro

static void tutorial_SpeedTestContainerOperations(Args _args)
{
    container   con;
    int         i;
    int         len = 1;
    int         timeBefore;
    int         timeAfter;
    ;
    #Start
    for (i = 1; i < #LoopCount; i++)
        con += i;
    #Reset

    #Start
    for (i = 1; i < #LoopCount; i++)
        con = con + i;
    #Reset

    #Start
    for (i = 1; i < #LoopCount; i++)
        con = conIns(con, conLen(con)+1, i);
    #Reset

    #Start
    for (i = 1; i < #LoopCount; i++)
    {
        con = conIns(con, len, i);
        len++;
    }
    #Reset

    #Start
    for (i = 1; i < #LoopCount; i++)
        con = conPoke(con, conLen(con)+1, i);
    #Reset

    #Start
    for (i = 1; i < #LoopCount; i++)
    {
        con = conPoke(con, len, i);
        len++;
    }
    #Reset
}
P.S. Допустил ошибочку
Сейчас код уже подправил. Спасибо glibs за наводку и продолжение тестирования.
Итак, как видно из обновленных результатов - предложенный мной выше вариант намного лучше всех остальных.
Исходя также из результатов, полученных glibs, использования Foundation Classes дает очень неплохие результаты.

Вот результаты, которые я получил на своей системе:
Изображения
 

Последний раз редактировалось kashperuk; 12.08.2007 в 16:51. Причина: ошибочка, блин :)
За это сообщение автора поблагодарили: mazzy (5).
Старый 12.08.2007, 11:45   #35  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
В 4.0 выбрасывает трассировку стека в начале третьего цикла при попытке вставить в контейнер элемент на нулевую позицию.

3.0 на эту ошибку не реагирует.

Что-то полезное таки делают. Приятно. Жаль, что мало.
__________________
С уважением,
glibs®
Старый 12.08.2007, 11:55   #36  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Слегка подправил код.

Info Сообщение (11:48:54) 0,3440
Info Сообщение (11:48:54) 9,8120
Info Сообщение (11:48:54) 10,0160
Info Сообщение (11:48:54) 9,9220
Info Сообщение (11:48:54) 10,1560
Info Сообщение (11:48:54) 10,0150

Это 4.0

Info Сообщение (11:50:12) 0,1880
Info Сообщение (11:50:12) 14,1090
Info Сообщение (11:50:12) 14,1100
Info Сообщение (11:50:12) 14,1720
Info Сообщение (11:50:12) 14,3590
Info Сообщение (11:50:12) 14,2500

А это 3.0

Ух ты... в 4.0 перед копированием русского текста мне не пришлось переключаться на русский. Интересно, это у всех так (а то у меня 2003-й английский Windows просто)?
__________________
С уважением,
glibs®
Старый 12.08.2007, 12:13   #37  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Попробовал List.

Вставка в 3.0 в конец 0,1880

В 4.0

Info Сообщение (12:08:24) 0,3280

А что за задача? Ставить нужно в конец или куда ни попади (надеюсь, вы не с ветряными мельницами боролись)?
__________________
С уважением,
glibs®
Старый 12.08.2007, 13:00   #38  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от glibs Посмотреть сообщение
Слегка подправил код.

Info Сообщение (11:48:54) 0,3440
Info Сообщение (11:48:54) 9,8120
Info Сообщение (11:48:54) 10,0160
Info Сообщение (11:48:54) 9,9220
Info Сообщение (11:48:54) 10,1560
Info Сообщение (11:48:54) 10,0150

Это 4.0

Info Сообщение (11:50:12) 0,1880
Info Сообщение (11:50:12) 14,1090
Info Сообщение (11:50:12) 14,1100
Info Сообщение (11:50:12) 14,1720
Info Сообщение (11:50:12) 14,3590
Info Сообщение (11:50:12) 14,2500

А это 3.0

Ух ты... в 4.0 перед копированием русского текста мне не пришлось переключаться на русский. Интересно, это у всех так (а то у меня 2003-й английский Windows просто)?
А можно посмотреть код? А то что-то уж больно результаты разные.
Копируется верно, потому что используется UniCode насколько я понимаю.
А задачи конкретной нет, это так, для общего развития себя и других
Старый 12.08.2007, 13:04   #39  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от glibs Посмотреть сообщение
А что за задача? Ставить нужно в конец или куда ни попади (надеюсь, вы не с ветряными мельницами боролись)?
А задача описана выше, у Андре.
Метод add, который я ему посоветовал подоптимизировать, не проверив прежде, действительно ли это оптимизация.
Старый 12.08.2007, 13:19   #40  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Последняя версия вот. Остальные я уже стер. Цифры по List я приводил, пока там еще был тип Integer.

#define.LoopCount(50000)
#LocalMacro.Start
timeBefore = WinApi::getTickCount();
#EndMacro
#LocalMacro.Reset
timeAfter = WinApi::getTickCount();
info(num2str((timeAfter - timeBefore) /1000, 0, 4, 2, 0));
con = conNull();
len = 1;
#EndMacro

static void glibs()
{
List list = new List(Types::Container);
ListIterator listIterator;
container con;
int i;
int len = 1;
int timeBefore;
int timeAfter;
;



#Start
for (i = 1; i < #LoopCount; i++)
list.addEnd([i]);
#Reset

/*
#Start
for (i = 1; i < #LoopCount; i++)
con += i;
#Reset

#Start
for (i = 1; i < #LoopCount; i++)
con = con + i;
#Reset

#Start
for (i = 1; i < #LoopCount; i++)
con = conIns(con, conLen(con) + 1, i);
#Reset

#Start
for (i = 1; i < #LoopCount; i++)
{
con = conIns(con, len, i);
len++;
}
#Reset

#Start
for (i = 1; i < #LoopCount; i++)
con = conPoke(con, conLen(con) + 1, i);
#Reset

#Start
for (i = 1; i < #LoopCount; i++)
{
con = conPoke(con, len, i);
len++;
}
#Reset
*/


}
__________________
С уважением,
glibs®
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptabuilder: How to build Axapta application from XPO files stored in Visual Source Safe. Blog bot DAX Blogs 0 12.04.2007 16:10
axaptabuilder: How to build Axapta application from XPO files stored in Visual Source Safe. Blog bot DAX Blogs 0 22.11.2006 15:20
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:42.