![]() |
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
|
Гость ![]() |
Цитата Кстати, ваш пример с рандомом - плохой. Потому что больше всего времени занимал вызов этого самого рандома... Да ещё и умножение на 1000. Ну, заменим генерацию и умножение на доступ к элементу массива, заполненного так:var , получим: Цитата Standart trunc: 328 , все равно преимущество "my trunc" над стандартной функцией только лишь трехкратное, но никак не 312/16=19-ти кратное, как это следует из твоего кода... Зато проверяется действительно время операции, а не (возможно) время выборки из памяти готового результата.FastTrunc: 78 My trunc: 110 |
![]() ![]() |
![]() |
Текстовая версия | 23.08.2025 7:45 |