|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|
Быстродействие double, decimal в x6419.01.2016, 11:48. Показов 9859. Ответов 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?
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
||
| 19.01.2016, 17:17 | ||
|
1
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|||||||||||
| 19.01.2016, 17:21 [ТС] | |||||||||||
|
Psilon, небольшой вопрос в догонку, правильно ли я понимаю, что
0
|
|||||||||||
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
||
| 19.01.2016, 17:24 | ||
|
1
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|||||
| 19.01.2016, 17:31 [ТС] | |||||
|
Второй раз себя процитирую ![]()
0
|
|||||
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
||||||
| 19.01.2016, 17:38 | ||||||
|
) немного поигравшись с культурами родился такой минимонстр:
where возвращает несколько форматов, но разбираться как-то уже лениво.
1
|
||||||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|
| 19.01.2016, 17:43 [ТС] | |
|
aquaMakc, спасибо, я с этим чуть позже поразбираюсь, пока актуален вопрос о struct и class.
Быстродействие double, decimal в x64
0
|
|
|
Master of Orion
|
||
| 19.01.2016, 17:43 | ||
|
aquaMakc, взял английскую культуру - получил доллар, что нелогичного-то?
Woldemar89, откуда ты получаешь-то? Если из управляемого кода, то нужно дженерики писать, если нет - то можно смотреть в сторону byte[]. С тем же успехом 1.0 + 1.0 считается быстрее, чем double.Epsilon + double.Epsilon (см. денормализованные числа). Но ты ведь этого не учитываешь
1
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
||||
| 19.01.2016, 17:46 [ТС] | ||||
0
|
||||
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
||
| 19.01.2016, 18:07 | ||
|
Добавлено через 3 минуты
0
|
||
|
Master of Orion
|
||
| 19.01.2016, 19:03 | ||
|
Woldemar89, структуры всегда должны быть неизменяемыми. Алсо свойства стоит делать вместо полей, ибо бывают разные приколы. Из старого наболевшего: в WPF не будет работать биндинг, если указано поле, а не свойство. Ну и в принципе с точки зрения производительности get; private set; лучше. Во-вторых ты занимаешься оптимизациями до непосредственных замеров, это плохо. Нужно писать грамотно, как правильно по архитектуре, а затем оптимизировать проблемные места, ибо известно, что оптимизация и красота кода как правило противопоставлены.
С точки зрения же архитектуры в таком случае нужно понять, что тебе нужно - семантика перемещения или копирования. Если перемещения, то нужно делать класс, если копирования - то структуру. Класс и структура в первую очередь должны выбираться именно на основании необходимой семантики взаимодействия с ними. Такие дела. Но стоит начать с другой статьи (он в первом предложении на неё ссылается). Добавлено через 6 минут
1
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|
| 19.01.2016, 19:11 [ТС] | |
|
Psilon, спасибо, буду переваривать
![]() Добавлено через 2 минуты И вообще, в голову пришла мысля, если уж оптимизировать, - то писать в Native. Может, и правда, дурью маюсь, но, в любом случае, знание не повредит.
0
|
|
|
Master of Orion
|
|
| 20.01.2016, 00:32 | |
|
Woldemar89, есть хороший парень - Андрей Акиньшин (он кстати замутил тему с тестами на форуме, но я с ним в реале встречался на конфах, он MVP). Так вот, он меня полностью пролечил от "напиши на С++ - сделай код быстрым"
1
|
|
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|||
| 20.01.2016, 00:46 [ТС] | |||
То есть, если руки из нужного места растут, C# тащит?
0
|
|||
|
Master of Orion
|
|
| 20.01.2016, 10:36 | |
|
Woldemar89, грубо говоря да. Есть нюансы офк, но я вот например когда писал свою библиотечку (я её уже сломал, нужно будет переписывать
), писал её на шарпе, при этом предусматривал оптимизацию выполнения в разных хардварных потоках (это когда процессор видит две независимых инструкции и выполняет их одновременно). В результате добавив еще и многопоточность получил прирост в ~10 раз относительно LINQ с тем же результатом
0
|
|
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
|||
| 20.01.2016, 11:02 [ТС] | |||
|
Может применять не умею, руки пока еще у меня не совсем из плечей растут, но, ползут вверх потихоньку
0
|
|||
|
Master of Orion
|
||
| 20.01.2016, 11:17 | ||
|
Woldemar89, ну в данном случае я про Min, Max и все прочее без параметров. Производительность всяких других методов ограничена тем, что мы делаем. Когда вызов лямбды это половина затраченного времени, ибо там выражение x*x, то это не вина LINQ
![]() Добавлено через 53 секунды Выглядит немного страшно, зато работает быстро. Когда перепишу - покажу, пожалуй
0
|
||
|
TheGreatCornholio
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
|
||||||||
| 20.01.2016, 11:22 [ТС] | ||||||||
Особенно для моего уровня и ниже.Я кстати чуть попереварил насчет классов и структур, спасибо за инфу, хранить в
![]() И можно будет помучаться в размером и выравниванием структур ![]() Знаю, что бредовое желание, но интересно чет
0
|
||||||||
|
Master of Orion
|
|
| 20.01.2016, 11:53 | |
|
Woldemar89, да ничего сложного на самом деле. Например нужно понимать, почему если мы итерируемся в цикле от 0 до 10000 элементов массива он посчитает быстрее, чем от 0 до 9999
Причем зачастую только на х64-компиляторе. Или почему нужно сначала класть результат вычислений в локальную переменную, а только потом её возвращать (даже если красивее просто вернуть результат). И т.п. Тут чисто эвристика и знание нюансов компилятора, ни больше ни меньше. Никакого rocket science тут нет и в помине, скорее даже наоборот Но мое мнение в том, что пишешь один раз - пользуешься везде и знаешь, что оно быстрое и хорошее А какие там goto под капотом, не суть важно. Если код write-once, которому не нужна поддержка - то это самое оно. Мб потом еще добавлю поддержку SIMD Тогда будет вообще красота. Если будет возможность в рантайме проверить, есть ли SIMD.
1
|
|
|
Модератор
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
|
|
| 20.01.2016, 12:40 | |
|
0
|
|
| 20.01.2016, 12:40 | |
|
Как преобразовать 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.
Опрашиваются регистры. . .
|