Mikhail Sukhov
|
Дата: 29.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 сек Код
var startTime = DateTime.Now;
decimal A;
for (var i1 = 0; i1 <= 1000000000; i1++)
{
A = 0.456m + 0.578m + 5.146m;
}
Console.WriteLine("decimal " + (DateTime.Now - startTime));
startTime = DateTime.Now;
double B;
for (var i1 = 0; i1 <= 1000000000; i1++)
{
B = 0.456 + 0.578 + 5.146;
}
Console.WriteLine("double " + (DateTime.Now - startTime));
startTime = DateTime.Now;
float C;
for (var i1 = 0; i1 <= 1000000000; i1++)
{
C = 0.456f + 0.578f + 5.146f;
}
Console.WriteLine("float " + (DateTime.Now - startTime));
Время деньги! Надо переходить на 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
|
Дата: 06.05.2014
vk37 Но для полноты картины и простые циклы полезны.
Выражение "Полнота картины" не русско-язычное. Заимствовано из английской лексики, обозначающее увидеть всю картину в целом. В то же самое время простые циклы показывают узкие вещи, конкретные. Что является антагонизмом "полной картины". Так что же вы хотели в своем сообщении написать? Если вдруг не понятно что я написал выше, то ваше выражение, что я процитировал, равносильно высказыванию (в простом приближении) "Но для определения бесконечности и конечные результаты полезны".
|
|
Спасибо:
|
|
|
|
|
Иван З.
|
Дата: 06.05.2014
|
|
Спасибо:
|
|
|
|