|
|
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Доброго дня господа ! Возникла тема - (изначально связана с недостатками до типу Double) попытался обойти через тип Float. Но при таком преобразовании значительно теряю производительность (функция интегрирована в базу Oracle) Почему - поясните пожалуйста. Код: java 1. 2. 3. 4. 5. 6. Заранее благодарен ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 16:30 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_X, Как минимум странное решение. То есть помимо того что было, вы вызываете дополнительный метод. ПОтом идёт умножение на Double с результатом Double, которое потом ещё и каститься к float. С чего бы вообще ему быть быстрее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 16:51 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Не спорю - что странное - возможно даже не нужное Но почему такое падение производительности по double работает 70 сек на 30 тыс. записей при float работает более 1 часа на 30 тыс. записей Менял только эту строку .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 16:54 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_XМенял только эту строку .... Или только думаете что это так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 16:58 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Поясните, зачем Вы это делаете? Что за "изначальный недостаток у типа double", которого нет у float? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 17:09 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Тема старая Причина и результат понятны - но как ее обойти для себе не решил ОСТАТОЧНО...... Вот и мучаюсь вдруг что получиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 17:22 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_X, Так работает железо Когда вы делаете приведение к float - оно (предположительно) вытягивается из сопроцессора, приводится к флоат с потерей точности, потом переводится в дабл - и грузится в сопроцессор. Видимо, это занимает значительное время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 17:23 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Не - честно ! Проверял несколько раз, и был крайне удивлен такому падению скорости. Не насколько разные типы, может ошибка в чем то другом, но как проверить ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 17:25 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
chabapokHOME_X, Так работает железо Когда вы делаете приведение к float - оно (предположительно) вытягивается из сопроцессора, приводится к флоат с потерей точности, потом переводится в дабл - и грузится в сопроцессор. Видимо, это занимает значительное время. Т.е. Вы хотите сказать что она обращается к внешним типам ? Вне базы ? Под OS WIN 7 особых тормозов не заметил.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 17:31 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_Xзначительно теряю производительность (функция интегрирована в базу Oracle) Типы данных . Например, потому, что float представляется как (и конвертируется в) numeric, а double - напрямую используется как binary_double. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 17:33 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_XBlazkowicz, Не - честно ! Проверял несколько раз, и был крайне удивлен такому падению скорости. Не насколько разные типы, может ошибка в чем то другом, но как проверить ? Надо смотреть что там конкретно исполняется на уровне байткода и даже после JIT. Потому как, есть шанс что там весь автобоксинг оптимизировался и осталась одна математика. А во втором случае ещё и куча боксинга\анбоксина сверху. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 17:48 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_XLeonid Kudryavtsev, Тема старая Причина и результат понятны - но как ее обойти для себе не решил ОСТАТОЧНО...... Вот и мучаюсь вдруг что получиться. Пример Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Результат 1086.48 1086.49 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 17:48 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovHOME_Xзначительно теряю производительность (функция интегрирована в базу Oracle) Типы данных . Например, потому, что float представляется как (и конвертируется в) numeric, а double - напрямую используется как binary_double. А применение типа oracle.sql.NUMBER. (он используется по ходу действия процедуры) Мне что-то даст ? Имею в виду - совместимость с базой - производительность - читабельность кода Уж очень не хочется абракатабру методов писать a.multiply(b).divide(c).add(d.substract(e)).setScale(2,BigDecimal.ROUND_HALF_UP).toString(); Спасибо за подсказки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 18:02 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_XА применение типа oracle.sql.NUMBER. (он используется по ходу действия процедуры) IMHO Это же обертка над BigDecimal. JavaDocThe NUMBER class provides converisons between the Oracle Number (lnxnum_t) data type and Java types byte[], byte, short, integer, long, float, double, String, BigInteger. and BigDecimal. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 19:00 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_X Но при таком преобразовании значительно теряю производительность ! как удалось обнаружить значительное снижение производительности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 19:33 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
MasterZivHOME_XНо при таком преобразовании значительно теряю производительность ! как удалось обнаружить значительное снижение производительности? Запустил запрос ДО изменения - Запустил запрос ПОСЛЕ изменения - Изменение это ремирования или разремирования одной строки (первоначальная функция) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 19:37 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevHOME_XА применение типа oracle.sql.NUMBER. (он используется по ходу действия процедуры) IMHO Это же обертка над BigDecimal. JavaDocThe NUMBER class provides converisons between the Oracle Number (lnxnum_t) data type and Java types byte[], byte, short, integer, long, float, double, String, BigInteger. and BigDecimal. Понял - спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2016, 19:38 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_Xможет ошибка в чем то другом, но как проверить ? нужно смотреть код, который выполняется. https://wiki.openjdk.java.net/display/HotSpot/PrintAssembly исхоники либы hsdis есть в jdk... HOME_XТ.е. Вы хотите сказать что она обращается к внешним типам ? Вне базы ? Под OS WIN 7 особых тормозов не заметил.... кто "она"?, к каким еще "внешним типам" и при чем тут база? у вас вопрос независим от базы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 13:08 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
chabapokкто "она"?, к каким еще "внешним типам" и при чем тут база? у вас вопрос независим от базы! На Jave писана процедура ("ОНА"), которая внедрена в базу данных Oracle ОНА же (процедура) запускается из под классов SWING - сделан интерфейс для операционке WIN7 в операционке тормозов нет... в базе вдруг возникают - почему и как отследить ? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2016, 19:36 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Насколько знаю, на х86 жава оперирует даблами. Даже если вы используете float - будет перевод в дабл. Очевидно, этот перевод занимает некоторое время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 09:58 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_Xв операционке тормозов нет... в базе вдруг возникают - почему и как отследить ?СпасибоДа завсегда пожалуйста ... Общее правило - "непонятную проблему" должен решать профильный специалист. "Отсюда с очевидностью следует", что АБД должен заняться своими прямыми должностными обязанностями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 16:26 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Ни один АБД такой фигней заниматься не будет и правильно сделает. Дебильная проблема высосанная из пальца. Почему дебильный код работает по дебильному? Какой код - так и работает. Добавили кучу преобразований туда-обратно, где-то в недрах JIT compiler оно сглючило, теперь ищут решение никому не нужно проблемы. IMHO & AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2016, 19:34 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevНи один АБД такой фигней заниматься не будет и правильно сделает.Нет, неправильно. Не АБД решать, какой код пишет разработчик, но показать этому разработчику в каком месте фигня - его право и обязанность. Если, конечно, отсутствует специально обученный человек, занимающийся вопросами производительности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 20:05 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
Не АБД решать, какой код пишет разработчик, но показать этому разработчику в каком месте фигня - его право и обязанность. Место которое у автора "тормозит" и так с точно до строки известно. Его и искать не надо. Что еще должен сделать АБД ? Может SR на металинке создать - но нужно ли ))) ? IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 20:58 |
|
||
|
Производительность типов Double и Float
|
|||
|---|---|---|---|
|
#18+
HOME_XДоброго дня господа ! Возникла тема - (изначально связана с недостатками до типу Double) попытался обойти через тип Float. Я вижу три смысла использоват float. 1) Обеспечение бинарной совметимости с каким-то интерфейсом RPC где этот тип захардкоден. 2) Естественный констрейнт на диапазон. Или специфичный к float алгоритм кастингов или округлений. 3) Экономия памяти на массивах. Для машин с малым heap. Что это... мобила или android, или любое другое устройство - ХЗ. Вобщем придумайте сами. И не просто хранение а интенсивное использование всего массива часто и много. Во всех остальных случаях я думаю float не нужен и является источником проблем. Для случая функции которая интегрирована в БД Oracle. Надо разобраться зачем она там есть-ли возможность перенести ее в контекст PLSQL машины. Как рекомендует господин Кайт - следует придерживаться стека SQL->PLSQL->emb.Java->C++ во всех задачах оптимизации и решать проблемы на том уровне где инструментарий позволяет их решать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2016, 21:11 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39304697&tid=2123714]: |
0ms |
get settings: |
13ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
142ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 483ms |

| 0 / 0 |
