Информация об изменениях

Сообщение 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 медленная, при работе с ценами всегда стараюсь оперировать целыми числами шагов.
Поэтому дал три варианта заполнения списка, попробуй, какой будет быстрее.
Ну и шаг на входе один — официальный или произвольный, разницы практически никакой, чтобы городить лишний код.
Re: [забыл математику] Оптимизация алгоритма
Здравствуйте, Real 3L0, Вы писали:

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 медленная, при работе с ценами всегда стараюсь оперировать целыми числами шагов.
Поэтому дал три варианта заполнения списка, попробуй, какой будет быстрее.
Ну и шаг на входе один — официальный или произвольный, разницы практически никакой, чтобы городить лишний код.