AXForum  
Вернуться   AXForum > Прочие обсуждения > Курилка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.02.2017, 01:14   #81  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Вот такой джоб.
Если закомметировать две этих строки, то отрабатывает моментально. Но если надо вывести в инфолог, то работает несколько минут для 10000 элементов.
X++:
       s = t.ToString();
        info(strFmt("%1: %2", i, s));
X++:
static void Job121(Args _args)
{
    int fibonacciSize = 10000;
    int i;
    System.Numerics.BigInteger x;
    System.Numerics.BigInteger y;
    System.Numerics.BigInteger t;
    str s;
    ;
    x = new System.Numerics.BigInteger(0);
    y = new System.Numerics.BigInteger(1);
    s = x.ToString();
    info(strFmt("1: %1", s));
    s = y.ToString();
    info(strFmt("2: %1", s));
    for (i = 3; i <= fibonacciSize; i++)
    {
        t = System.Numerics.BigInteger::Add(x, y);
        s = t.ToString();
        info(strFmt("%1: %2", i, s));
        x = y;
        y = t;
    }
}
Старый 12.02.2017, 01:17   #82  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Мой вывод такой. System.Numerics.BigInteger эффективно использовать для большого количества внутренних расчетов. Но присвоение этой переменной к аксаптовскому типу str очень медленное для больших чисел. Похоже, что оно медленне, чем мой код на X++, который запихивает большие числа в массив из 1000 чисел типа int64.
Старый 12.02.2017, 01:28   #83  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Вот результаты сравнения работы двух джобов для получения 10 тысяч элементов Фибоначчи..
Job120, который не использует System.Numerics.BigInteger, с выводом в инфолог работает 57 секунд.
Job121, который использует System.Numerics.BigInteger, с выводом в инфолог работает 2 минуты 08 секунд.

Job120, который не использует System.Numerics.BigInteger, без вывода в инфолог работает 18 секунд.
Job121, который использует System.Numerics.BigInteger, без вывода в инфолог работает моментально
За это сообщение автора поблагодарили: Pustik (12).
Старый 12.02.2017, 01:31   #84  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
зачем? у бигинта есть toString )))

==============
эх, остановили мой серверок с акс6. пришлось на акс7 делать...
так и не понял как сейчас там свой таймер запускать.
но результаты такие:

время выполнения с выводом в инфолог одного последнего числа = 317 ms
последнее рассчитанное число:
54438373113565281338734260993750380135389184554695967026247715841208582865622349017083051547938960541173822675978026317384359584751116241439174702642959169925586334117906063048089793531476108466259072759367899150677960088306597966641965824937721800381441158841042480997984696487375337180028163763317781927941101369262750979509800713596718023814710669912644214775254478587674568963808002962265133111359929762726679441400101575800043510777465935805362502461707918059226414679005690752321895868142367849593880756423483754386342639635970733756260098962462668746112041739819404875062443709868654315626847186195620146126642232711815040367018825205314845875817193533529827837800351902529239517836689467661917953884712441028463935449484614450778762529520961887597272889220768537396475869543159172434537193611263743926337313005896167248051737986306368115003088396749587102619524631352447499505204198305187168321623283859794627245919771454628218399695789223798912199431775469705216131081096559950638297261253848242007897109054754028438149611930465061866170122983288964352733750792786069444761853525144421077928045979904561298129423809156055033032338919609162236698759922782923191896688017718575555520994653320128446502371153715141749290913104897203455577507196645425232862022019506091483585223882711016708433051169942115775151255510251655931888164048344129557038825477521111577395780115868397072602565614824956460538700280331311861485399805397031555727529693399586079850381581446276433858828529535803424850845426446471681531001533180479567436396815653326152509571127480411928196022148849148284389124178520174507305538928717857923509417743383331506898239354421988805429332440371194867215543576548565499134519271098919802665184564927827827212957649240235507595558205647569365394873317659000206373126570643509709482649710038733517477713403319028105575667931789470024118803094604034362953471997461392274791549730356412633074230824051999996101549784667340458326852960388301120765629245998136251652347093963049734046445106365304163630823669242257761468288461791843224793434406079917883360676846711185597501

X++:
using System.Numerics;

class fibb
{        
    /// <summary>
    /// Runs the class with the specified arguments.
    /// </summary>
    /// <param name = "_args">The specified arguments.</param>
    public static void main(Args _args)
    {        
        int fibonacciSize = 10000;
        int i;

        BigInteger x = 0;
        BigInteger y = 1;
        BigInteger z;

        for(i=0; i<fibonacciSize; ++i)
        {
            z = BigInteger::Add(x,y);
            //info(z.ToString());
            x = y;
            y = z;
        }
        info(strFmt("last num: %1", z.ToString()));
    }

}
===================
спасибо!
очень увлекательно. и удалось узнать что-то новое.
Миниатюры
Нажмите на изображение для увеличения
Название: fibb-ax7.PNG
Просмотров: 385
Размер:	115.5 Кб
ID:	11195  
За это сообщение автора поблагодарили: Ace of Database (10).
Старый 12.02.2017, 01:37   #85  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Цитата:
Сообщение от mazzy Посмотреть сообщение
зачем? у бигинта есть toString )))
так я же и использовал toString.
Но присваивал его переменной с типом str, так как напрямую передавать в функцию strfmt не получается - вываливается в отладчик с ошибкой о неудачном преобразовании типов.
AX2012 R2

Последний раз редактировалось mazzy; 12.02.2017 в 01:43.
За это сообщение автора поблагодарили: mazzy (2).
Старый 12.02.2017, 01:42   #86  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Мой вывод такой. System.Numerics.BigInteger эффективно использовать для большого количества внутренних расчетов. Но присвоение этой переменной к аксаптовскому типу str очень медленное для больших чисел. Похоже, что оно медленне, чем мой код на X++, который запихивает большие числа в массив из 1000 чисел типа int64.
не думаю, что присвоение.
мне кажется, что здесь плохо работает сборщик мусора.

опять же, на 2012 стоит попробовать на клиенте и на сервере. со включенным CIL и с выключенным.
Старый 12.02.2017, 01:44   #87  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Напрямую не удается вызвать BigInt.ToString() в функцию strfmt.
Приходится сначала его присваивать переменной типа str,.
Миниатюры
Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 417
Размер:	94.4 Кб
ID:	11196  
Старый 12.02.2017, 01:48   #88  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
мы просто вместе пишем. я не видел джобика пока писал свое сообщение.

Цитата:
Сообщение от Ace of Database Посмотреть сообщение
X++:
...
    for (i = 3; i <= fibonacciSize; i++)
...
о! а у меня - косяк! )))))
да, цикл правильно начинаеть не с нуля, как в моем джобе ))))
Старый 12.02.2017, 01:49   #89  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
877 / 649 (23) +++++++
Регистрация: 14.10.2004
Отредактировал Job120, Теперь он показывает порядковый номер числа Фибоначчи. И выводит ровно столько элементов ряда, сколько было заказано. Раньше выводил на 2 элемента больше - не считал первые два 0 и 1.
За это сообщение автора поблагодарили: mazzy (2), Raven Melancholic (5).
Старый 13.02.2017, 11:40   #90  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
На примере Ace of Database как раз видно, чем полезны подобные вопросы на собеседовании (включая "Как передвинуть гору фудзи?").
Предложено решение, самостоятельно признаны его ограничения недостатки, предложены варианты, при поиске решений продемонстрировано не только умение разработать алгоритм, но и способность найти что-то в смежных областях (тот же BigInteger).
PS: кстати, как раз на числа Фибоначчи пришлось пару лет назад смотреть при решении совершенно определенной бизнес задачи оптимизации объема закупок по результатам сводного планирования, правда выбрал другой способ, но зарекаться ,что "это никогда не понадобится при решении стоящих перед нами задач" я бы не стал.

Последний раз редактировалось Raven Melancholic; 13.02.2017 в 11:43.
За это сообщение автора поблагодарили: mazzy (2), AlexeyS (1).
Старый 14.02.2017, 06:12   #91  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,252 / 980 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от Silence Посмотреть сообщение
Сомневаюсь, что ждали именно этого.
Сложно сказать чего они ждали. Это могла быть тупая задачка из букваря, а мог быть завуалированный вопрос:"какие ассоциации вызывает у вас слово рекурсия?"
__________________
Isn't it nice when things just work?
Старый 14.02.2017, 16:36   #92  
AXcons is offline
AXcons
Участник
 
442 / 112 (4) +++++
Регистрация: 21.05.2015
Адрес: Москва
Числа Фибоначчи никогда рекурсией не считают. Это задачка первого курса программирования.

https://www.youtube.com/watch?v=OQ5jsbhAv_M

- Лекция в MIT по алгоритмам, в которой эта задача разбирается.
Это один из самых популярных вопросов на собеседованиях на позицию разработчика (за пределами России, понятно).
Старый 14.02.2017, 16:44   #93  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AXcons Посмотреть сообщение
Числа Фибоначчи никогда рекурсией не считают.
Прям таки "никогда"?
А что же тогда рекурсией считают?

http://coub.com/view/6bb71
Старый 14.02.2017, 16:58   #94  
AXcons is offline
AXcons
Участник
 
442 / 112 (4) +++++
Регистрация: 21.05.2015
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
Прям таки "никогда"?
А что же тогда рекурсией считают?
Начался флуд как обычно.
Действительно, для чего изобрели рекурсию - исключительно, чтобы считать ей числа Фибоначчи! Больше то нечего ей считать.

Вы модерато форума разработчиков. Вы Кнута "Искусство программирования" почитайте как-нибудь на досуге. А то получается, что вы оспариваете анналы теории алгоритмов, которые преподают во всех университетах последние лет 30-40 наверное.
За это сообщение автора поблагодарили: mazzy (2).
Старый 14.02.2017, 17:02   #95  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от AXcons Посмотреть сообщение
форума разработчиков.
...и консультантов!
Старый 14.02.2017, 17:04   #96  
AXcons is offline
AXcons
Участник
 
442 / 112 (4) +++++
Регистрация: 21.05.2015
Адрес: Москва
Цитата:
Сообщение от mazzy Посмотреть сообщение
...и консультантов!
Консультантов здесь нет давно.
За это сообщение автора поблагодарили: Lemming (9).
Старый 14.02.2017, 17:07   #97  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Вот так и возвращаются советы назад.
Про Кнута именно mazzy упомянул в этой теме.
Помню дали задачку, вывести ряд Фибоначи. Нарисовал рекурсию. Не понравилось. Видать не поняли.
За это сообщение автора поблагодарили: mazzy (2).
Старый 14.02.2017, 17:14   #98  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Raven Melancholic Посмотреть сообщение
Вот так и возвращаются советы назад.
Кнута - можно. Это вежливо и можно советовать хоть каждый день.

Типа:
Здравствуй тебе и семье твоей
Почитай Отца своего, Мать
Почитай Кнута
За это сообщение автора поблагодарили: Diman (1).
Старый 14.02.2017, 17:17   #99  
cuba is offline
cuba
Участник
 
346 / 134 (5) +++++
Регистрация: 18.09.2014
Адрес: Kyiv
Цитата:
Сообщение от AXcons Посмотреть сообщение
Консультантов здесь нет давно.
А вот и неправда)))
Старый 14.02.2017, 17:26   #100  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от AXcons Посмотреть сообщение
Числа Фибоначчи никогда рекурсией не считают.
Интересно, как тогда выкручиваются те, кто пишен на каком-нибудь лиспе или хаскеле? Там с циклами как-тоо не очень сложилось, зато с рекурсивностью все в порядке.
За это сообщение автора поблагодарили: Diman (1).
 


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

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

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