AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 10.08.2007, 11:22   #21  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Join Date: 21.10.2004
Quote:
Originally Posted by mazzy View Post
Чистый Пролог никогда не умел работать с БД. Особенно с реляционными. В реляционных БД очень тяжело реализуется концепция отката, которая используется для перебора вариантов.

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

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

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

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

типа
X++:
select EmplTable;
xml = '<records>' + join(map(new CursorEnumerator(EmplTable), 'x.xml()')) + '</records>';
Old 11.08.2007, 19:34   #34  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: 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 дает очень неплохие результаты.

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

Last edited by kashperuk; 12.08.2007 at 16:51. Reason: ошибочка, блин :)
This post has been rated by: mazzy (5).
Old 12.08.2007, 11:45   #35  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Join Date: 10.06.2002
Location: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
В 4.0 выбрасывает трассировку стека в начале третьего цикла при попытке вставить в контейнер элемент на нулевую позицию.

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

Что-то полезное таки делают. Приятно. Жаль, что мало.
__________________
С уважением,
glibs®
Old 12.08.2007, 11:55   #36  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Join Date: 10.06.2002
Location: 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®
Old 12.08.2007, 12:13   #37  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Join Date: 10.06.2002
Location: 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®
Old 12.08.2007, 13:00   #38  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
Quote:
Originally Posted by glibs View Post
Слегка подправил код.

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 насколько я понимаю.
А задачи конкретной нет, это так, для общего развития себя и других
Old 12.08.2007, 13:04   #39  
kashperuk is offline
kashperuk
Участник
kashperuk's Avatar
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Join Date: 30.05.2004
Location: Atlanta, GA, USA
Quote:
Originally Posted by glibs View Post
А что за задача? Ставить нужно в конец или куда ни попади (надеюсь, вы не с ветряными мельницами боролись)?
А задача описана выше, у Андре.
Метод add, который я ему посоветовал подоптимизировать, не проверив прежде, действительно ли это оптимизация.
Old 12.08.2007, 13:19   #40  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Join Date: 10.06.2002
Location: 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®
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 02:53.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.