Привет!
Wed Jun 15 2005 09:19, Dmitry Orlov wrote to Alexander Golov:
...
DO>>>>> Эффективно по какому критерию?
AG>>>> Пустой траты времени.
DO>>> А for(;;) {...} - эффективная конструкция?
AG>> За отсутствием расшифровки "...", смысла в вопросе не вижу.
DO> Да хоть и вообще ничего.
В таком случае это неэффективная конструкция, если сравнивать со sleep, на худой конец idle.
...
DO>>> Да по-фиг чем занимается прибор, на преобразование форматов DO>>> для вывода человеку времени много не нужно.
AG>> Hесколько милисекунд на процессоре с 1 МГц циклом. Это время AG>> отобранное у других задач и энергия потраченная впустую.
DO> Это очень часто абсолютно не критично.
Случаев когда это критично, или крайне желательно избежать, также немало.
...
DO>>> Преобразовать плавучку в целый не всегда возможно, и нужно DO>>> еще где-то передавать информацию о порядке.
AG>> В данном случае (см. исходный вопрос) речь идёт о выводе AG>> значений со вполне конкретным форматом. Это глубоко за 90% AG>> всех случаев вывода на средства отображения приборов (как я AG>> заметил, многие тут вообще считают, что во всех случаях можно AG>> обойтись совсем без ПЗ).
DO> В таких случаях обычно можно. Хотя наглядность и простота написания DO> программы может быть иногда достаточным аргументом для того, чтобы DO> пользоваться плавучкой и форматным выводом.
На самом деле далеко не всё можно адекватно решить в целой арифметике, во всяком случае с приемлимыми затратами и без драматической потери наглядности. Но printf в данном случае просто обладает совершенно излишней функциональностью; потребность в выводе значений в экпоненциальной форме или в совершенно неизвестном формате возникает нечасто.
...
AG>> Какая разница, что может перекрывать число в данном формате, AG>> если параметр представленный в нём и который нужно отобразить AG>> обладает совершенно определёнными областью значений и AG>> точностью представления.
DO> Которые далеко не всегда укладываются в разумный диапазон целых чисел.
Если мы говорим от 32-разрядном типе float, т.е. с 24-разрядной мантиссой, то он, естественно, всегда может быть адекватно преобразован в 32-разрядный long. Дополнительные нули справа можно вывести в виде строки, никакой другой полезной информации эти разряды не несут.
AG>>>> понимаю (уж во всяком случае когда в программе дай бог с AG>>>> десяток таких операций вывода):
DO>>> Да хоть один, какая разница?
AG>> Что тогда вообще нагляность уходит на 123-й план.
DO> Почему собственно?
Потому что всего один, и так хорошо известно что он делает, всматриваться, вчитываться, разбираться нет никакой нужды.
...
AG>>>> Out_Number (( large )( Val_Press * 1.0197162e-2 ), 5, 4 ) ; AG>>>> // Давление кг/см2
DO>>> И что сие означает? И чем хуже printf("Давление %3.2f атм."); DO>>> ?
AG>> Тем что работает во много раз медленнее.
DO> Я уже говорил, что очень часто это не имеет никакого значения.
А когда имеет, чем Out_Number хуже printf?
Александр Голов, Москва, snipped-for-privacy@mail.ru