|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|
Быстродействие double, decimal в x6419.01.2016, 11:48. Показов 9862. Ответов 106
Работаю с финансовыми данными, максимальное количество знаков после запятой - 4.
Получаю данные по DDE в формате object[][]. Тип объекта может быть string или double. Возникли следующие вопросы: 1. Арифметика double крутиться в регистрах процессора на x64, коли double 8 бит? 2. Раз уж приложение работает с финансами, и, вроде как, желательно использовать decimal, могу ли я без значительных издержек (погрешность допускается) обойтись double в угоду быстродействия? 3. Если все-таки, захочу работать с double, применение Math.Round не отнимет полученного выигрыша в производительности? 4. Как правильно задать конфигурацию решения x64? 5. Как из object, тип которого заранее известен (double), быстрее получить значение? Распаковка (double)obj? 6. Допустим, имеется класс, с полем double и в DGV отображается BindingList<SomeClass>, как заставить отображаться этот double с определенным количеством цифр после зпт? (вопрос не особо важен). 7. Какие есть способы быстро работать с decimal и конвертировать из double в decimal? 8. Ну, а так же интересуют комментарии в целом, по поводу быстродействия в данных условиях. Добавлено через 16 часов 54 минуты Сокращаю перечень вопросов до 1, 4, 8 ![]() С миру по нитке хоть собрать бы. Есть мнения хотя бы?
0
|
|
| 19.01.2016, 11:48 | |
|
Ответы с готовыми решениями:
106
Быстродействие одинаковых программ x86 или x64 Какой тип использовать для денежных коэффициентов (например процент скидки)? Decimal или Double?
|
|
Master of Orion
|
||
| 21.01.2016, 15:33 | ||
Так что меня этим не проймешь: я говорю на языке, который понимает > 1 человека.Когда говорят про .Net, различают 2 компилятора: csc.exe, который фактически ничего не делает, тупо транслируя 1:1 C# в IL, не выполняя никаких оптимизаций, а и JIT-компилятор (в простонародье просто джит), который уже занимается оптимизациями (насколько позволяют временные рамки), превращает уже в инструкции целевой машины код и т.п. Так вот, еще не существует JIT-компилятора IL-кода, который по оптимизациям сделает gcc/icc/msvscc/llvm/... Да и невозможно физически за такой ограниченный промежуток времени сделать правильные выводы из окружения.
2
|
||
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
||||||||||||||||||||||
| 21.01.2016, 17:08 | ||||||||||||||||||||||
Интересно то что к .net относится еще несколько языков, например F# который транслирует
0
|
||||||||||||||||||||||
|
Master of Orion
|
|
| 21.01.2016, 19:21 | |
|
maxillion, давно уже исследовал оптимизации процессорные.
Вот, можно всю тему почитать в принципе, даю прямую ссылку на то, как С оптимизирует (плюсы в этом плане мощнее намного, вспомнить только cosntexpr) Оптимизации, производимые компилятором
1
|
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|
| 21.01.2016, 19:26 | |
|
0
|
|
|
Master of Orion
|
|
| 22.01.2016, 12:15 | |
|
maxillion, ну и нужно понимать, что как раз JIT всё это дело оптимизирует, т.к. это элементарная оптимизация
19h = 25 Это практически единственное, что JIT еще может оптимизировать. И это не показатель.
2
|
|
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
||
| 22.01.2016, 12:35 | ||
|
0
|
||
|
Master of Orion
|
|
| 22.01.2016, 12:43 | |
|
maxillion, так кто ж утверждал, что JIT-компилятор всё знает на целевой машине и может все круто оптимизировать?
Вот поэтому на него и возложили оптимизации. А почему не стали дублировать оптимизации в csc, да потому что это упрощало его разработку и работу. Больше кода - больше багов, больше стоимость, дольше разработка... И да, я не уверен, что F# делает это на этапе компиляции. Т.к. это тот же .Net-язык и подчиняется он общим правилам, компилируется одним и тем же джитом, соответственно и поступать должен примерно также, как и другие нет-компиляторы.
1
|
|
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
|||||||||||||
| 22.01.2016, 13:01 | |||||||||||||
|
А что нужно знать о целевой машине для оптимизации этого кода ?
0
|
|||||||||||||
| 22.01.2016, 13:46 | |
|
Не по теме: Пока вы тут спорите, в репо corecrl идут пуши с оптимизациями simd инструкций
0
|
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||||||||||
| 22.01.2016, 14:24 | ||||||||||||
|
C#
0
|
||||||||||||
|
Master of Orion
|
|
| 22.01.2016, 14:32 | |
|
pycture, какой-то неправильный листинг, похоже на дебаг-сборку
Я выше скриншот привел.Konctantin, SIMD сейчас реализован только через библиотечку МС, насколько я помню, причем поддерживает его только RyuJit, причем если на целевой платформе SIMD'а не будет (хотя это конечно маловероятно, но все же) генерируется очень неэффективный код. Но в целом радует конечно это направление. Это не C++ AMP, но тоже ничо.
1
|
|
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
|
| 22.01.2016, 15:11 | |
|
0
|
|
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||
| 22.01.2016, 15:16 | |||
|
Добавлено через 45 секунд
0
|
|||
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
|||
| 22.01.2016, 15:21 | |||
|
Добавлено через 4 минуты
0
|
|||
|
Master of Orion
|
|||
| 22.01.2016, 15:28 | |||
![]() Поэтому они есть в JIT'е, в котором эти самые оптимизации ограничены по времени, и предподсчитать цикл он не может. Какие еще вопросы? Почему они так сделали? Потому что не хотели тратить лишние деньги, вот и все. Не считая потенциальных подводных камней. Когда модуль оптимизации один, всё просто и понятно. Когда их несколько, то начинаются забавные взаимные эффекты. Стоит вспомнить например ObjC, в котором ТРИ разных сборщика мусора, которые могут подраться и удалить живой объект.
1
|
|||
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
||
| 22.01.2016, 15:39 | ||
|
Да ладно, не кипятитесь вы так , это всего лишь вопрос.
0
|
||
|
Master of Orion
|
||
| 22.01.2016, 15:45 | ||
![]() Это конечно всё мои фантазии, но в принципе это возможные причины.
2
|
||
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
||
| 22.01.2016, 15:52 | ||
0
|
||
|
Master of Orion
|
|
| 22.01.2016, 16:23 | |
|
maxillion, еще раз, если есть различия на уровне Il'а, то комплияторы csc.exe fsc.exe по разному компилируют. Что наверняка так, ибо языки принципиально различаются. После того, как Il скомпилился, он будет одним и тем же джитом обрабатыаться. В шарпе проблема в том, что есть 2 этапа компиляции: text -> IL, IL -> x86. Хотя вопрос привычки. С тем же успехом люди часто путаются в потоках, например (stream/thread), есть еще пара мелочей. Со временем путаница проходит.
1
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
||
| 22.01.2016, 16:45 | ||
|
Оптимизацию можно условно поделить на "алгоритмическую" и "железную". Замена константной функции на константу, замена хвостовой рекурсии и т.п. - это "алгоритмическая" оптимизация. Подобной оптимизацией должен заниматься "компилятор в промежуточный код". А "железной" (т.е. под конкретное железо) оптимизацией должен заниматься "компилятор из промежуточного кода в машинный". "Железная" оптимизация по сути сводится к нахождению в коде неких шаблонов и замена их на соответствующий машинный код.
Добавлено через 55 секунд
1
|
||
| 22.01.2016, 16:45 | |
|
Как преобразовать Double в Decimal? Обрезать значение (усечь) decimal/double Аргумент 1 не удается преобразовать из double? в decimal
MaskedTextBox: ввод только Decimal или Double Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|