decimal vs double и скорость тестирования
Atom Ответить
28.04.2014


На моем тестере разница по скорости тестирования в 4 раза.



Спасибо:




9 Ответов
Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 28.04.2014
Ответить


vk37 Перейти
На моем тестере разница по скорости тестирования в 4 раза.


А должно быть в 5. Где-то ошибка.
Спасибо:

slavon

Фотография
Дата: 29.04.2014
Ответить


Михаил, черноту юмора мы оценили. vk37, ну действительно, давайте по-подробнее: что, где и как тестировали?
Спасибо:

vk37

Фотография
Курсы
Дата: 30.04.2014
Ответить


slavon Перейти
Михаил, черноту юмора мы оценили. vk37, ну действительно, давайте по-подробнее: что, где и как тестировали?
Тип decimal в сравнении с double значительно медленнее. Здесь, например, можно посмотреть.

Автор топика
Спасибо:

MenDel

Фотография
Дата: 02.05.2014
Ответить


Немного не в тему, но
к слову о скорости,

Скажите есть ли разница в скорости в зависимости от того на чем запущен тестер HDD, SSD или флэшка?

При торговле на реале,
Если на событие NewTrades подписать 10 разных методов. Это повлияет на скорость обработки сделок или все 10 методов будут работать параллельно и скорость обработки полученных сделок не изменится?

То же самое если запущено 10 различных стратегий и в каждой еще работает стоп-лосс и тейк-профит скорость обработки получаемых сделок будет меньше, чем если 1 стратегия работает?

Скажите пожалуйста кто знает


Действительно decimal в 5 раз медленнее double
простейший тест со сложением 3 чисел с циклом на 1 млрд итераций это подтвердил
decimal 9.9035664 сек
double 1,8151038 сек
float 2,3131323 сек



Время деньги!
Надо переходить на double)
Спасибо:

VassilSanych

Фотография
Дата: 04.05.2014
Ответить


Во-первых, decimal ширше. Надо чётко осознавать, хватит ли double.
Во-вторых, иногда в операциях с БД тип decimal - тип по умолчанию, а значит будут потери на приведение типов.
В третьих, иногда при сериализации decimal так же более родной тип.
А при вычислениях и хранении, конечно double лучше, потому что
- меньше
- оптимизирован для нынешних процессоров.
Так что всё надо проверять не простыми циклами, а в прототипах.
Спасибо:

vk37

Фотография
Курсы
Дата: 04.05.2014
Ответить


MenDel Перейти
Действительно decimal в 5 раз медленнее double
простейший тест со сложением 3 чисел с циклом на 1 млрд итераций это подтвердил
decimal 9.9035664 сек
double 1,8151038 сек
float 2,3131323 сек

Наверное код не очень показательный. У меня получились такие результаты на моей машине:
decimal 00:00:00.2390504
double 00:00:00.2370485
float 00:00:00.2440493

Т.е. разницы по времени нет.

Если код поправить так:
Код
            var startTime = DateTime.Now;
            decimal a = 0;
            for (var i = 0; i <= 1000000000; i++)
            {
                a += 0.456m + 0.578m + 5.146m;
            }
            Console.WriteLine("decimal " + (DateTime.Now - startTime));

            startTime = DateTime.Now;
            double b = 0;
            for (var i = 0; i <= 1000000000; i++)
            {
                b += 0.456 + 0.578 + 5.146;
            }
            Console.WriteLine("double " + (DateTime.Now - startTime));

            startTime = DateTime.Now;
            float c = 0;
            for (var i = 0; i <= 1000000000; i++)
            {
                c += 0.456f + 0.578f + 5.146f;
            }
            Console.WriteLine("float " + (DateTime.Now - startTime));
То результат будет таким:
decimal 00:00:12.1334884
double 00:00:00.2380476
float 00:00:00.2370482

По этому тесту тип decimal в 30 раз медленнее, чем double.

Автор топика
Спасибо:

vk37

Фотография
Курсы
Дата: 04.05.2014
Ответить


VassilSanych Перейти
Так что всё надо проверять не простыми циклами, а в прототипах.
Согласен. Но для полноты картины и простые циклы полезны.

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 05.05.2014
Ответить


vk37 Перейти
Но для полноты картины и простые циклы полезны.


Выражение "Полнота картины" не русско-язычное. Заимствовано из английской лексики, обозначающее увидеть всю картину в целом.

В то же самое время простые циклы показывают узкие вещи, конкретные. Что является антагонизмом "полной картины".

Так что же вы хотели в своем сообщении написать?

Если вдруг не понятно что я написал выше, то ваше выражение, что я процитировал, равносильно высказыванию (в простом приближении) "Но для определения бесконечности и конечные результаты полезны".
Спасибо:

Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 06.05.2014
Ответить


Иб...ть все умные какие.
vk37, эта тема обсуждалась здесь https://stocksharp.ru/fo...u-double--a-nie-decimal/
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy