Здравствуйте, WolfHound, Вы писали:
G>>23.59 секунд на моей системе.
WH>Execution: 21.31 Garbage collection: 0.21 Total: 21.53 и примерно 290 метров памяти.
WH>Моя программа
WH>8.66727 и примерно 12.8 метров памяти.
Чудеса оптимизации.
sieve primes i
| i == Size = primes
| primes.[ i ] = sieve { primes & [ n * i ] = False \\ n <- [ 2.. (Size - 1)/i ] } ( i + 1 )
= sieve primes ( i + 1 )
Что сделано: заменяем [ 2*i, 3*i..Size-1 ] на [ 2..(Size — 1)/i ].
15.67 секунд, 98 мегов памяти. Вот теперь все нормально.
У тебя на компе будет ~14.16 секунд. Против 8.66 твоих. Теперь
ты примерно в 1.6 раз быстрее. А разница в расходе памяти объясняется только отсутствием упаковки bool массивов. Т. е. все в порядке. Хотя такие вещи компилятор мог бы делать и сам. Ну как, сделаешь версию на char?
экзешник я заменил на новый.