|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
Привет всем! Задача следующая: имею массив - Task<BigInteger>[Environment.ProcessorCount] нужно перемножить все результаты. На данный момент это решается так: Код: c# 1. 2. 3. 4. 5. 6.
Однако очевидно, что это не оптимальное решение, тк при получение первых двух результатов уже можно начать считать, не дожидаясь остальных. Так же очевидно(хотя проверил), если имеем планировщик в к-ом BigInteger Result { get; private set; } + lock (_lock){ Result *= task.Result; } это ещё медленнее(точнее практически столько же, как и без AsParallel()), чем выше. Заранее благодарю ВС ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 13:15 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 13:35 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
petalvik, тоже дольше, там просто действие разделено во времени, те не в конце, а по ходу исполнения, но временные затраты такие как у без AsParallel() ((( ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 13:45 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
v skopin Привет всем! Задача следующая: имею массив - Task<BigInteger>[Environment.ProcessorCount] нужно перемножить все результаты. На данный момент это решается так: Код: c# 1. 2. 3. 4. 5. 6.
Однако очевидно, что это не оптимальное решение, тк при получение первых двух результатов уже можно начать считать, не дожидаясь остальных. Так же очевидно(хотя проверил), если имеем планировщик в к-ом BigInteger Result { get; private set; } + lock (_lock){ Result *= task.Result; } это ещё медленнее(точнее практически столько же, как и без AsParallel()), чем выше. Заранее благодарю ВС Я не уверен, тут зависит от данных, но вы больше ресурсов потратите на накладные операции. Интересная задача, я потестирую различные решения, какой у вас порядок количества чисел? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 13:52 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
Andromeda777, не знаю точно - пишу для родственника-физика ... что-то в космосе считает. Тестирую на 1000000! (факториал) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 14:07 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
v skopin, Если ты работаешь с числами, то может тебе будут полезны векторы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 14:31 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
v skopin Тестирую на 1000000! (факториал) Да и не влезет результат в BigInt, если хотя бы небольшая часть чисел будет больше 1 ) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 14:43 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
Shocker.Pro через сколько тысяч лет должен закончиться расчет? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 18:26 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
Так как вы его считаете? Он же ни в память ни в диск не влезет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2021, 23:06 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
mayton Так как вы его считаете? Ну, может он его по формуле Стирлинга считает. Хотя с памятью да, в любом случае будет затык. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2021, 03:10 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
в 1млн! только число порядков несколько миллионов источника такого количества информации просто не существует Я думаю, что с ТС просто возникло какое-то недопонимание )) считается, что в известной наблюдаемой вселенной существует от 10 78 до 10 82 атомов ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2021, 13:11 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
Да. Если отбросить коэффициенты то по Стирлингу будет примерно миллион в миллионной степени. Такие числа невозможно ни хранить ни перемножать. Всей планеты Земля не хватит на это. Наверное ТС страдает фигней. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2021, 13:15 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
Боюсь разочаровать уважаемых знатоков: не просто считает, но и выводит на экран На скане факториал 800000L - (долго работает ToString(), поэтому не 1 000 000), влезла в скан только часть последних нулей, размер шрифта 5))))) результаты вычислений 1000000L! на 8ми ядерном ноутбучном i5 10ого поколения получен за 00:03:10.1499570. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 03:45 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
проще же посмотреть, например тут: Factorial Calculator n! там нет возможности посчитать для 1000000, только для 999999 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 03:58 |
|
Как оптимизировать перемножние результатов массива задач?
|
|||
---|---|---|---|
#18+
v skopin Боюсь разочаровать уважаемых знатоков: не просто считает, но и выводит на экран Andromeda777 какой у вас порядок количества чисел? v skopin Тестирую на 1000000! (факториал) это и вызвало недоумение ... |
|||
:
Нравится:
Не нравится:
|
|||
20.11.2021, 12:35 |
|
|
Start [/forum/topic.php?fid=20&msg=40113096&tid=1398204]: |
0ms |
get settings: |
27ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
89ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
370ms |
get tp. blocked users: |
2ms |
others: | 343ms |
total: | 871ms |
0 / 0 |