slavon:
Михаил, черноту юмора мы оценили. vk37, ну действительно, давайте по-подробнее: что, где и как тестировали?Тип decimal в сравнении с double значительно медленнее. Здесь, например, можно посмотреть.
Скажите есть ли разница в скорости в зависимости от того на чем запущен тестер HDD, SSD или флэшка?
При торговле на реале,
Если на событие NewTrades подписать 10 разных методов. Это повлияет на скорость обработки сделок или все 10 методов будут работать параллельно и скорость обработки полученных сделок не изменится?
То же самое если запущено 10 различных стратегий и в каждой еще работает стоп-лосс и тейк-профит скорость обработки получаемых сделок будет меньше, чем если 1 стратегия работает?
Скажите пожалуйста кто знает
Действительно decimal в 5 раз медленнее double
простейший тест со сложением 3 чисел с циклом на 1 млрд итераций это подтвердил
decimal 9.9035664 сек
double 1,8151038 сек
float 2,3131323 сек
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
Т.е. разницы по времени нет.
Если код поправить так:```csharp
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.
Во-первых, decimal ширше. Надо чётко осознавать, хватит ли double.
Во-вторых, иногда в операциях с БД тип decimal - тип по умолчанию, а значит будут потери на приведение типов.
В третьих, иногда при сериализации decimal так же более родной тип.
А при вычислениях и хранении, конечно double лучше, потому что
меньше
оптимизирован для нынешних процессоров.
Так что всё надо проверять не простыми циклами, а в прототипах.
vk37:
Но для полноты картины и простые циклы полезны.
Выражение "Полнота картины" не русско-язычное. Заимствовано из английской лексики, обозначающее увидеть всю картину в целом.
В то же самое время простые циклы показывают узкие вещи, конкретные. Что является антагонизмом "полной картины".
Так что же вы хотели в своем сообщении написать?
Если вдруг не понятно что я написал выше, то ваше выражение, что я процитировал, равносильно высказыванию (в простом приближении) "Но для определения бесконечности и конечные результаты полезны".
コメント (9)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
А должно быть в 5. Где-то ошибка.
Михаил, черноту юмора мы оценили. vk37, ну действительно, давайте по-подробнее: что, где и как тестировали?
Немного не в тему, но к слову о скорости,
Скажите есть ли разница в скорости в зависимости от того на чем запущен тестер HDD, SSD или флэшка?
При торговле на реале, Если на событие NewTrades подписать 10 разных методов. Это повлияет на скорость обработки сделок или все 10 методов будут работать параллельно и скорость обработки полученных сделок не изменится?
То же самое если запущено 10 различных стратегий и в каждой еще работает стоп-лосс и тейк-профит скорость обработки получаемых сделок будет меньше, чем если 1 стратегия работает?
Скажите пожалуйста кто знает
Действительно decimal в 5 раз медленнее double простейший тест со сложением 3 чисел с циклом на 1 млрд итераций это подтвердил decimal 9.9035664 сек double 1,8151038 сек float 2,3131323 сек
Время деньги! Надо переходить на double)
Т.е. разницы по времени нет.
Если код поправить так:```csharp 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));
Во-первых, decimal ширше. Надо чётко осознавать, хватит ли double. Во-вторых, иногда в операциях с БД тип decimal - тип по умолчанию, а значит будут потери на приведение типов. В третьих, иногда при сериализации decimal так же более родной тип. А при вычислениях и хранении, конечно double лучше, потому что
Выражение "Полнота картины" не русско-язычное. Заимствовано из английской лексики, обозначающее увидеть всю картину в целом.
В то же самое время простые циклы показывают узкие вещи, конкретные. Что является антагонизмом "полной картины".
Так что же вы хотели в своем сообщении написать?
Если вдруг не понятно что я написал выше, то ваше выражение, что я процитировал, равносильно высказыванию (в простом приближении) "Но для определения бесконечности и конечные результаты полезны".
Иб...ть все умные какие. vk37, эта тема обсуждалась здесь http://stocksharp.com/forum/1201/Pochiemu-double--a-nie-decimal/