|
![]() |
#1 |
Moderator
|
Цитата:
Как и предвидел Маззи, вычисление первых 10 тысяч элементов ряда фибоначчи должно занимать в Аксапте меньше одной минуты. У меня получился результат 18 секунд без вывода в окно инфолога, и 57 секунд - с выводом результата в инфолог (еще секунд 15 сам инфолог перерисовывается - я это в расчет не беру).
X++: > let fibonacci = Seq.unfold (fun (x, y) -> Some(x, (y, x + y))) (0I,1I);; val fibonacci : seq<System.Numerics.BigInteger> > #time;; --> Timing now on > fibonacci |> Seq.take 10000 |> Seq.iteri (printf "%3i - %A");; // тут я не стал копировать набор чисел Real: 00:00:03.454, CPU: 00:00:02.265, GC gen0: 27, gen1: 27, gen2: 0 |
|
|
За это сообщение автора поблагодарили: mazzy (2), Ace of Database (5). |
![]() |
#2 |
Участник
|
Андре, а эта функция вычисляет без переполнения? Там вроде задан тип BigInteger. А это же не больше 100 элементов Фибоначчи?
|
|
|
За это сообщение автора поблагодарили: mazzy (10). |
![]() |
#3 |
Участник
|
не, не в Аксапте дело.
ты сейчас используешь bigint. именно не более 100. а Ace of Database выводит до 10000 чисел. обновлено: там и так 10000 чисел. > fibonacci |> Seq.take 10000 bigint в F# - это синоним для .net библиотеки длинных чисел System.Numeric.Biginteger. прикольно. спасибо за новое знание. Последний раз редактировалось mazzy; 12.02.2017 в 02:02. |
|