![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
TarasBer |
![]()
Сообщение
#1
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Итак у нас, например, такая задача. Вещественное число из диапазона от 0 до 65535 преобразовать в word взятием целой части.
Это программа для дельфы.
Программа на моём селероне с 600 мегагерцами вывела вот что: Код Standart trunc: 1913 My trunc: 681 Floating point division: 1582 Результат налицо - стандартный транк медленнее даже столь дорогостоящей операции, как вещественное деление. Изврат, использующий внутренню структуру типа double, оказался намного быстрее. Для турбо паскаля аналогичная проверка выглядит так:
Программа показала вот что: Код Standart trunc: 58 My trunc: 7 Floating point division: 27 Тут результат ещё более на лицо. Доктор, доктор, что мне делать по этому поводу? -------------------- |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Кстати, вот вариант от Merlyn-а, который перекрывает по скорости и "Standard Trunc" и "My Trunc" из первоначального кода:
const Half: double = 0.5 ;, вот чего мне показал TP70: Цитата Standart trunc: 38 chomp: 18 My trunc: 20 Floating point division: 8 |
TarasBer |
![]()
Сообщение
#3
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я так понял, что это просто последовательность команд для сопроцессора, округляющая число? И минус 0.5 тут именно чтоб целая часть получилась. Проверил это у себя (естественно не в виде функции), получилось чуть быстрее моего варианта. Чтож, значит этой асмовставочкой и буду пользоваться. -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 23.08.2025 7:45 |