Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Упрощенный синтаксис в С++
 
 автор: Киналь   (31.03.2006 в 23:28)   письмо автору
 
 

Купил недавно книгу по С/С++, как сказано, "для начинающих". Ну, так это или нет, не знаю, но вопрос у меня возник.
Везде в примерах используются конструкции типа

int i=5;

char c=getch();

while((c=getch()) != eof)


и все такое прочее, то есть автор идет по пути максимальной вложенности операторов. Имхо, это некрасиво.

Но это только имхо, а хотелось бы узнать поточнее: правильно ли так писать как с точки зрения "хорошего тона", как и с точки зрения эффективности (быстродействия в первую очередь - ведь на С++ от Hello, world недалеко и до DOOM4:) )

PS И еще, в догонку. Там же, в книге, упомянут атрибут __fastcall для функции, ускоряющий ее работу. А в чем подвох? почему бы всем функциям его не приписать?

   
 
 автор: cheops   (01.04.2006 в 13:17)   письмо автору
 
   для: Киналь   (31.03.2006 в 23:28)
 

Большая степень вложености - это наследоство от C - страшного ничего нет, но злоупотреблять этим не стоит...

PS Я так понимаю речь идёт о Builder? __fastcall позволяет аргументы вызываемой функции разместить непосредственно в регистрах, а не в памяти, что ускоряет вызов функции. Но если параметры в регистры не влазят (например, это строка) толку от неё не будет. Более того, компилятор у Builder достаточно умный и сам может сообразить имеется возможность засунуть параметры в регистры или нет. В общем для совместимости лучше избегать __fastcall, её наверное удобно применять, одновременно с дизасемблером, когда видно, что компилятор не догодался поместить параметры в регистры, а сделать это можно...

   
 
 автор: Киналь   (01.04.2006 в 13:21)   письмо автору
 
   для: cheops   (01.04.2006 в 13:17)
 

Понятно, спасибо!
Но все же, про вложенность - сильно ли это влияет быстродействие? И как? Сам пока измерить не могу - функций для времени не знаю=)
Насчет __fastcall - это мне пока слишком круто=) но буду иметь в виду.

   
 
 автор: cheops   (01.04.2006 в 13:43)   письмо автору
 
   для: Киналь   (01.04.2006 в 13:21)
 

На скорость это не влияет, это влияет на количество используемой памяти, просто при выносе из вложенного блока функции - её результат вам придётся хранить в отдельной переменной, если вам не жалко пары байт (а жалеть их не следует), можно именно так и поступать.

   
 
 автор: Киналь   (01.04.2006 в 13:52)   письмо автору
 
   для: cheops   (01.04.2006 в 13:43)
 

Понятно... Тогда еще вопрос (уж простите за назойливость:) )
Если программа сводится к вычислительным задачам (расчет поля, к примеру, или там колебаний конструкций), то помешает ли эта самые "пара байт"? Должны же они, байты. на что-то влиять?

Я почему так выспрашиваю - напугали тут меня, что расчет картины поля среднего электродвигателя займет у опять-таки среднего по мощности ПК несколько суток. Вот я и думаю, что к мелочам надо отнестись внимательно, пока они не вошли в привычку=)

   
 
 автор: cheops   (01.04.2006 в 14:13)   письмо автору
 
   для: Киналь   (01.04.2006 в 13:52)
 

Тут тогда на скорость следует обращать внимание, поинтересуйтесь сколько памяти жрёт такой расчёт, сдаётся мне что байты экономить придётся (только не усердствуйте - проще оптимизировать рабочую программу, чем заставить правильно работать оптимизированную). Я в своё время возился примерно с такими же задачами (кванты), но мне было проще у меня были программные комплексы на Fortran, которые начали разрабатываться мировым сообществом ещё до моего рождения на свет (и кстати, до GPL тоже, от туда у меня любовь к BSD-лицензиям). Так как эти комплексы пережили не один десяток архитектур, в них была очень хорошая масштабируемость - память прекрасно конвертировалась во время: если у вас мало памяти - считаться будет дольше, если много - быстрее. Поэтому памятью сильно не разбрасывайтесь, если особенно с многомерными пространствами работаете...

   
 
 автор: Киналь   (01.04.2006 в 15:32)   письмо автору
 
   для: cheops   (01.04.2006 в 14:13)
 

Большое спасибо, все понятно.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования