<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-8445457995709570547.post7211091744961763429..comments</id><updated>2008-06-23T20:42:34.268+03:00</updated><category term='Obj - C'/><category term='Coding Style'/><category term='Usability'/><category term='cryptography'/><category term='CSS'/><category term='web'/><category term='Javascript'/><category term='OpenCV'/><category term='Others'/><category term='Смехаради'/><category term='Google'/><category term='C++'/><category term='Analyze'/><category term='Интервью'/><category term='Flash'/><category term='iPhone'/><category term='MFC'/><category term='Audio'/><category term='bada SDK'/><category term='Ruby'/><category term='Releases'/><category term='Грабли'/><category term='Framework'/><category term='Links'/><category term='Qt'/><category term='Watir'/><category term='canvas'/><category term='Unit-testing'/><category term='Tools4Money'/><category term='Quiz'/><title type='text'>Comments on codeBlogZ: Как отказаться от виртуальных функций в угоду прои...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.codeblogz.ru/feeds/7211091744961763429/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default'/><link rel='alternate' type='text/html' href='http://www.codeblogz.ru/2008/06/blog-post_21.html'/><author><name>Сергей | codeBlogZ</name><uri>http://www.blogger.com/profile/04122895593901467342</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8445457995709570547.post-906878621222565925</id><published>2008-06-23T20:42:00.000+03:00</published><updated>2008-06-23T20:42:00.000+03:00</updated><title type='text'>&lt;i&gt;Кстати, переименуй пост, наверное))&lt;br&gt;Отказыва...</title><content type='html'>&lt;I&gt;Кстати, переименуй пост, наверное))&lt;BR/&gt;Отказываемся мы все-таки всего лишь от виртуальных функций, а не от наследования.&lt;/I&gt;&lt;BR/&gt;Действительно, мой ляпсус ;)&lt;BR/&gt;&lt;BR/&gt;Все твои замечания верны, ведь у каждого подхода есть свои недостатки, которые покрываются преимуществами, уместные в &lt;B&gt;конкретной&lt;/B&gt; ситуации. Где необходима высокая скорость реакции run-time, такой подход вполне оправдан. И даже не важно, во сколько раз мы получаем лучшую производительность. Главное, что оно очевидно. Остальное дело техники ;)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/906878621222565925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/906878621222565925'/><link rel='alternate' type='text/html' href='http://www.codeblogz.ru/2008/06/blog-post_21.html?showComment=1214242920000#c906878621222565925' title=''/><author><name>Сергей | codeBlogZ</name><uri>http://www.blogger.com/profile/04122895593901467342</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://bp2.blogger.com/_v4FkjOpnH0g/R_jbzzNFosI/AAAAAAAAACE/RA9li5bAsgU/S220/from_profile.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.codeblogz.ru/2008/06/blog-post_21.html' ref='tag:blogger.com,1999:blog-8445457995709570547.post-7211091744961763429' source='http://www.blogger.com/feeds/8445457995709570547/posts/default/7211091744961763429' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1895557716'/></entry><entry><id>tag:blogger.com,1999:blog-8445457995709570547.post-5690556020904154082</id><published>2008-06-23T15:32:00.000+03:00</published><updated>2008-06-23T15:32:00.000+03:00</updated><title type='text'>Кстати, переименуй пост, наверное))&lt;br&gt;Отказываемс...</title><content type='html'>Кстати, переименуй пост, наверное))&lt;BR/&gt;Отказываемся мы все-таки всего лишь от виртуальных функций, а не от наследования.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/5690556020904154082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/5690556020904154082'/><link rel='alternate' type='text/html' href='http://www.codeblogz.ru/2008/06/blog-post_21.html?showComment=1214224320000#c5690556020904154082' title=''/><author><name>Alno</name><uri>http://www.blogger.com/profile/05285230872430090862</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.codeblogz.ru/2008/06/blog-post_21.html' ref='tag:blogger.com,1999:blog-8445457995709570547.post-7211091744961763429' source='http://www.blogger.com/feeds/8445457995709570547/posts/default/7211091744961763429' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-654587629'/></entry><entry><id>tag:blogger.com,1999:blog-8445457995709570547.post-6047986703057794974</id><published>2008-06-23T15:27:00.000+03:00</published><updated>2008-06-23T15:27:00.000+03:00</updated><title type='text'>1) Безусловно виртуальные функции несут дополнител...</title><content type='html'>1) Безусловно виртуальные функции несут дополнительные издержки. Однако, мне кажется, что говорить, будто бы отказ от них приводит к &lt;B&gt;n-кратному увеличению производительности&lt;/B&gt; для любого n не совсем корректно, по той причине, что это число &lt;B&gt;значительно&lt;/B&gt; зависит от используемой системы.&lt;BR/&gt;&lt;BR/&gt;2) Предлагаемый подход, интересен, однако как минимум усложняет объявление класса b снижает читабельность/модифицируемость/сопровождаемость кода. Окромя этого, весь код плавно перетекает в заголовочные файлы, что еще и значительно увеличивает время компоновки.&lt;BR/&gt;&lt;BR/&gt;3) Уменьшить накладные расходы от использования виртуальных функций, наверное, проще хорошо проектируя систему, учитывая издержки виртуальности.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/6047986703057794974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/6047986703057794974'/><link rel='alternate' type='text/html' href='http://www.codeblogz.ru/2008/06/blog-post_21.html?showComment=1214224020000#c6047986703057794974' title=''/><author><name>Alno</name><uri>http://www.blogger.com/profile/05285230872430090862</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.codeblogz.ru/2008/06/blog-post_21.html' ref='tag:blogger.com,1999:blog-8445457995709570547.post-7211091744961763429' source='http://www.blogger.com/feeds/8445457995709570547/posts/default/7211091744961763429' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-654587629'/></entry><entry><id>tag:blogger.com,1999:blog-8445457995709570547.post-8517660349139858534</id><published>2008-06-23T12:21:00.000+03:00</published><updated>2008-06-23T12:21:00.000+03:00</updated><title type='text'>Про такой подход можно почитать в C++ Templates: T...</title><content type='html'>Про такой подход можно почитать в C++ Templates: The Complete Guide, называется Parameterized Virtuality. Реальные примеры, насколько я помню, это ATL, crypto++.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/8517660349139858534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/8517660349139858534'/><link rel='alternate' type='text/html' href='http://www.codeblogz.ru/2008/06/blog-post_21.html?showComment=1214212860000#c8517660349139858534' title=''/><author><name>sash_ko</name><uri>http://www.blogger.com/profile/15600678989040979143</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='11052341750403477542'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='28' src='http://bp0.blogger.com/_lU8mYvjtzEQ/R-ECPkPLpEI/AAAAAAAAAOA/eTXEX1_ae84/S220/me.JPG'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.codeblogz.ru/2008/06/blog-post_21.html' ref='tag:blogger.com,1999:blog-8445457995709570547.post-7211091744961763429' source='http://www.blogger.com/feeds/8445457995709570547/posts/default/7211091744961763429' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-782504044'/></entry><entry><id>tag:blogger.com,1999:blog-8445457995709570547.post-6610084533689781798</id><published>2008-06-21T20:15:00.000+03:00</published><updated>2008-06-21T20:15:00.000+03:00</updated><title type='text'>Я сначала удивился - если правильно помню, виртуал...</title><content type='html'>Я сначала удивился - если правильно помню, виртуальные функции должны быть медленее не в три раза, а в полтора. А потом внимательно почитал сообщение по ссылке и успокоился - замер производительности не совсем корректен, потому что невиртуальные функции оказались inline.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/6610084533689781798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/6610084533689781798'/><link rel='alternate' type='text/html' href='http://www.codeblogz.ru/2008/06/blog-post_21.html?showComment=1214068500000#c6610084533689781798' title=''/><author><name>allex</name><uri>http://www.all-x.net</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.codeblogz.ru/2008/06/blog-post_21.html' ref='tag:blogger.com,1999:blog-8445457995709570547.post-7211091744961763429' source='http://www.blogger.com/feeds/8445457995709570547/posts/default/7211091744961763429' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1999312925'/></entry><entry><id>tag:blogger.com,1999:blog-8445457995709570547.post-5912156426489461279</id><published>2008-06-21T19:35:00.000+03:00</published><updated>2008-06-21T19:35:00.000+03:00</updated><title type='text'>Тот пример с шаблонами достаточно прост для того, ...</title><content type='html'>Тот пример с шаблонами достаточно прост для того, чтобы понять, насколько сложным код делает процесс оптимизации. По моему мнению, в более сложных проектах такой прием поставит на файл исходника атрибут write-only :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/5912156426489461279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8445457995709570547/7211091744961763429/comments/default/5912156426489461279'/><link rel='alternate' type='text/html' href='http://www.codeblogz.ru/2008/06/blog-post_21.html?showComment=1214066100000#c5912156426489461279' title=''/><author><name>dzhariy</name><uri>http://www.blogger.com/profile/16764200273707689152</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://www.codeblogz.ru/2008/06/blog-post_21.html' ref='tag:blogger.com,1999:blog-8445457995709570547.post-7211091744961763429' source='http://www.blogger.com/feeds/8445457995709570547/posts/default/7211091744961763429' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1899822064'/></entry></feed>
