Сообщение Re: [забыл математику] Оптимизация алгоритма от 14.09.2022 17:44
Изменено 14.09.2022 17:51 Xander Zerge
Re: [забыл математику] Оптимизация алгоритма
Здравствуйте, Real 3L0, Вы писали:
R3>public static List<decimal> PricesForBuy(decimal marketBuyPrice, decimal marketSellPrice, decimal officialMinStep, decimal? overwriteMinStep)
R3>чтобы не с нуля перебором занимался.
Я бы сделал как-то так:
https://dotnetfiddle.net/6sHILF
Математика на decimal медленная, при работе с ценами всегда стараюсь оперировать целыми числами шагов.
Поэтому дал три варианта заполнения списка, попробуй, какой будет быстрее.
Ну и шаг на входе один — официальный или произвольный, разницы практически никакой, чтобы городить лишний код.
R3>public static List<decimal> PricesForBuy(decimal marketBuyPrice, decimal marketSellPrice, decimal officialMinStep, decimal? overwriteMinStep)
R3>чтобы не с нуля перебором занимался.
Я бы сделал как-то так:
https://dotnetfiddle.net/6sHILF
Математика на decimal медленная, при работе с ценами всегда стараюсь оперировать целыми числами шагов.
Поэтому дал три варианта заполнения списка, попробуй, какой будет быстрее.
Ну и шаг на входе один — официальный или произвольный, разницы практически никакой, чтобы городить лишний код.
Re: [забыл математику] Оптимизация алгоритма
Здравствуйте, Real 3L0, Вы писали:
R3>public static List<decimal> PricesForBuy(decimal marketBuyPrice, decimal marketSellPrice, decimal officialMinStep, decimal? overwriteMinStep)
R3>чтобы не с нуля перебором занимался.
Я бы сделал как-то так:
https://dotnetfiddle.net/6sHILF
Математика на decimal медленная, при работе с ценами всегда стараюсь оперировать целыми числами шагов.
Поэтому дал три варианта заполнения списка, попробуй, какой будет быстрее.
Ну и шаг на входе один — официальный или произвольный, разницы практически никакой, чтобы городить лишний код.
R3>public static List<decimal> PricesForBuy(decimal marketBuyPrice, decimal marketSellPrice, decimal officialMinStep, decimal? overwriteMinStep)
R3>чтобы не с нуля перебором занимался.
Я бы сделал как-то так:
https://dotnetfiddle.net/6sHILF
var imax = (int)(marketSellPrice / minStep);
var imin = (int)(marketBuyPrice / minStep);
if (minStep * imin < marketBuyPrice)
++imin;
return MakePriceRange_V3(imin, imax, minStep);
Математика на decimal медленная, при работе с ценами всегда стараюсь оперировать целыми числами шагов.
Поэтому дал три варианта заполнения списка, попробуй, какой будет быстрее.
Ну и шаг на входе один — официальный или произвольный, разницы практически никакой, чтобы городить лишний код.