{"id":179137,"date":"2013-05-11T22:53:07","date_gmt":"2013-05-11T18:53:07","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=179137"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=179137","title":{"rendered":"<span class=\"post_title\">\u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0435\u0439 \u043e \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u0445 \u0438\u043b\u0438 \u0444\u043e\u0440\u043a-\u0431\u043e\u043c\u0431\u0430 \u044d\u0442\u0430\u043f\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0441\u044f \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043b\u044e\u0441\u043e\u0432\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. \u0412 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u0445 \u0432\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d <a href=\"http:\/\/www.daniweb.com\/software-development\/cpp\/threads\/346683\/template-code-bloat\">code bloat<\/a>. \u0414\u043b\u044f \u0441++ \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c <s>\u043d\u0435\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0435<\/s> \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c. \u041a\u043e\u0434 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0447\u0435\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0443. \u0422.\u0435. template T foo(T a); \u0434\u043b\u044f int \u0438 char \u2014 \u044d\u0442\u043e \u0434\u0432\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u043e\u0442\u043a\u0430\u0437\u043e\u043c \u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u043b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432. <br \/>  \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u044b\u0432\u0435\u0440\u043d\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0430\u0438\u0437\u043d\u0430\u043d\u043a\u0443 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0430 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.<br \/>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u043f\u0435\u0447\u0430\u0442\u0438\u043b \u2014 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e 53Mb \u0438\u0437 60 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430. \u0418 \u0442\u043e \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0442\u0440\u0435\u0445 \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0438 \u0446\u0435\u043d\u043e\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0447\u0430\u0441\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u0410 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043c\/\u0441\u0442\u0440\u043e\u043a\u0438 \u2014 2.3\u041c\u0411\/\u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043c\u0430 14\u041c\u0411.<br \/>  \u041a\u0430\u043a \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u2014 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h4>\u0420\u0435\u0441\u0443\u0440\u0441\u044b<\/h4>\n<p>\u041e\u0434\u0438\u043d \u043d\u043e\u0443\u0442\u0431\u0443\u043a c 4\u0413\u0431 \u043f\u0430\u043c\u044f\u0442\u0438,<br \/>  \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043e\u043c \u00abIntel\u00ae Core(TM) i3-2330M CPU @ 2.20GHz\u00bb,<br \/>  \u041e\u0421 Linux 3.7.3-101.fc17.x86_64<br \/>  \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b\u043c swap \u0440\u0430\u0437\u0434\u0435\u043b\u043e\u043c. <br \/>  \u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u043f \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e \u0442\u043e\u0439\u0436\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0435, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0438 \u043f\u043e\u0441\u0442\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0444\u043e\u0440\u043a-\u0431\u043e\u043c\u0431\u0430. \u041f\u0440\u0438 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0435\u0434\u0430\u043b \u0432\u0441\u044e \u043f\u0430\u043c\u044f\u0442\u044c \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043e\u0431\u043c\u0435\u043d\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u0438\u0441\u043a\u043e\u043c, \u0447\u0442\u043e \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e \u0438 \u043d\u0430\u0434\u043e\u043b\u0433\u043e \u0432\u0435\u0448\u0430\u043b\u043e \u043c\u0430\u0448\u0438\u043d\u0443.<\/p>\n<p>  \u0412\u0435\u0440\u0441\u0438\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432:  <\/p>\n<ul>\n<li>g++ (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2)   <\/li>\n<li>Intel\u00ae C++ Intel\u00ae 64 Compiler XE for applications running on Intel\u00ae 64, Version 13.1.1.163 Build 20130313   <\/li>\n<li>clang version 3.3 (trunk 179304)   <\/li>\n<\/ul>\n<h4>\u0414\u043b\u0438\u043d\u043d\u044b\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u044b<\/h4>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u2014 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432 \u044d\u0442\u0430\u043f\u0430 \u043a\u043e\u043c\u0438\u043b\u044f\u0446\u0438\u0438 \u0438 \u043d\u0430\u043d\u0438\u0437\u0430\u0442\u044c \u043d\u0430 \u043d\u0435\u0433\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u0439. \u0412\u043e\u0442 \u0442\u0430\u043a:  <\/p>\n<pre><code class=\"cpp\">template&lt;long n&gt; inline void nop(){nop&lt;n-1&gt;();asm(&quot;nop&quot;); } template&lt;&gt; inline void nop&lt;0&gt;() {asm(&quot;nop&quot;);}  int main(int argc, char ** argv) {         nop&lt;LVL&gt;();         return 0; }  <\/code><\/pre>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u0434\u043e\u043b\u0436\u0435\u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f main() \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u0430\u044f \u043f\u0443\u0441\u0442\u044b\u043c\u0438 <s>\u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c\u0438<\/s> \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f\u043c <b>nop<\/b>.<\/p>\n<p>  \u0420\u0430\u0437\u043c\u0435\u0440 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 nop \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438. \u0412 \u043c\u0430\u043d\u0435 g++ \u0443\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u0430 17 \u0438 1024 \u0434\u043b\u044f \u0441++11.   <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0426\u0438\u0442\u0430\u0442\u0430 \u0438\u0437 \u043c\u0430\u043d\u0430<\/b><\/p>\n<div class=\"spoiler_text\">-ftemplate-depth=n<br \/>   Set the maximum instantiation depth for template classes to n. A limit on the template instantiation depth is needed<br \/>   to detect endless recursions during template class instantiation. <b> ANSI\/ISO C++ conforming<\/b> programs must not rely on a<br \/>   maximum depth greater than 17 (changed to 1024 in C++11). The default value is 900, as the compiler can run out of<br \/>   stack space before hitting 1024 in some situations.  <\/div>\n<\/div>\n<p> \u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430\u0445 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b. \u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u043b\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u0443\u043d\u043a\u0442, \u0447\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439:<br \/>  4.7.1.14 \u0434\u043b\u044f \u0441++03<br \/>  4.7.1.15 \u0434\u043b\u044f c++11<br \/>  \u0427\u0442\u043e \u0438 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u043b\u043e\u0441\u044c \u043d\u0430 \u043e\u043f\u044b\u0442\u0435. \u0414\u043b\u044f \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e LVL \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u044b \u0432\u044b\u043b\u0435\u0442\u0430\u043b\u0438. \u0423\u0434\u0438\u0432\u0438\u043b clang++ \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b\u043b\u0435\u0442\u0430\u043b \u043d\u0430 2<sup>13<\/sup>, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 g++ \u0438 icpc \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u044e\u0449\u0438\u0445 2<sup>17<\/sup>.<\/p>\n<p>  \u0421\u0431\u043e\u0440\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438:  <\/p>\n<pre><code class=\"bash\"> clang++  -DLVL=$(( 2**$n)) -o list$n .\/list.cc -ftemplate-depth=3000000 -O$x      g++  -DLVL=$(( 2**$n)) -o list$n .\/list.cc -ftemplate-depth=3000000 -O$x     icpc  -DLVL=$(( 2**$n)) -o list$n .\/list.cc -O$x <\/code><\/pre>\n<p> \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f \u0441\u0431\u043e\u0440\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#\/bin\/bash MIN=0 MAX=19 for i in 2; do         mkdir -p attempt$i         cd attempt$i         for CXX in clang++ g++ icpc         do                 mkdir -p $CXX                 cd $CXX                 for O in O0 O1 O2 O3 Os                  do                         mkdir -p $O                         cd $O                         (while :;do free -m |grep Mem|awk '{print $3}' &gt;&gt; .\/memory;sleep 1;done)&                         TIME=$!                         for i in $(seq $MIN $MAX)                         do  #                             CMD=&quot;$CXX -$O ..\/..\/..\/fbomb.cc -DLVL=$i -o fbomb$i&quot; #-save-temps=obj &quot;                                 CMD=&quot;$CXX -$O ..\/..\/..\/list.cc -DLVL=$(( 2 ** $i)) -o list$i  -ftemplate-depth=3000000&quot; #-save-temps=obj &quot;                                 echo $CMD                                 $CMD                                     sleep 5                                 sleep 5                         done                         kill -9 $TIME                         cd ..                 done                 cd ..         done         cd .. done <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>\u0421\u043e\u0431\u0438\u0440\u0430\u043b\u0438\u0441\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u0434\u043e\u043b\u0433\u043e. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430, \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438. \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432. \u0427\u0435\u0442\u044b\u0440\u0435 \u0441\u0442\u043e\u043b\u0431\u0446\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439:  <\/p>\n<ol>\n<li>\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u043e\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u042d\u0442\u0438 \u0433\u0440\u0430\u0444\u0438\u043a\u0438 \u0434\u0430\u043d\u044b \u0441\u043a\u043e\u0440\u0435\u0435 \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438, \u0442.\u043a. \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0435\u0449\u0451 \u0425-\u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u043e\u0434\u043d\u0430\u043a\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0432\u0438\u0434\u043d\u044b.<\/li>\n<li>\u0420\u0430\u0437\u043c\u0435\u0440 \u0431\u0438\u043d\u0430\u0440\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u2014 14\u041c\u0411<\/li>\n<li>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432. \u041a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e inline \u2014 \u043b\u0438\u0448\u044c \u0440\u0435\u043a\u043e\u043c\u0435\u0434\u0430\u0446\u0438\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 N. Nop-\u044b \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u043d\u044b \u043e\u043d\u0438 \u0442\u0430\u043a:\n<pre><code class=\"bash\">nm --demangle .\/list$i|grep nop|wc -l<\/code><\/pre>\n<\/li>\n<li>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0447\u0435\u0441\u0442\u043d\u044b\u0445 nop-\u043e\u0432. \u041f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u043d\u043d\u043e \u0438\u0437 \u0434\u0438\u0437\u0430\u0441\u0441\u0435\u0431\u043b\u0435\u0440\u0430:\n<pre><code class=\"bash\">objdump -d .\/list$i|grep 'nop$'|wc -l<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0438<\/b><\/p>\n<div class=\"spoiler_text\">\n<h5>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u0435\u0439 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432<\/h5>\n<p>  <\/p>\n<table>\n<tr>\n<th>\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438  <\/th>\n<th>\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430  <\/th>\n<th>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435  <\/th>\n<th>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 nop  <\/th>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/b40\/8d2\/3bf\/b408d23bf406db55dcec51d1f413f9fd.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/138\/bf2\/615\/138bf2615b888a4aa18cd5b9e8f7d7e5.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/353\/13e\/270\/35313e27065450f12b2f0994e3d06483.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/093\/3fd\/573\/0933fd573838fb130bb1c536ed8202c8.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/fb9\/66b\/fc6\/fb966bfc642c96b88b1954a9d7fa87ed.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/eb8\/d19\/856\/eb8d198562cf70f191d4d35390519cfd.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/c65\/c77\/31a\/c65c7731ae120f3fd663c2f7cf2d89e3.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/94e\/530\/7cc\/94e5307cca6a03aa182bb0089ee5ef5b.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/990\/55b\/865\/99055b86593c76816633db98fc40799c.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/e0f\/35a\/29f\/e0f35a29ff935d2b90763c6254b2d155.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/664\/611\/733\/6646117336ef5772e42b3522bfd5d1c3.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/565\/203\/3df\/5652033df7c356cbb82fe3d857347a76.png\"\/>  <\/td>\n<\/tr>\n<\/table>\n<h5>\u0421\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u043f\u0440\u0438 \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0443\u0440\u043e\u0432\u043d\u044f\u0445 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438<\/h5>\n<p>  <\/p>\n<table>\n<tr>\n<th>\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438  <\/th>\n<th>\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430  <\/th>\n<th>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435  <\/th>\n<th>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 nop  <\/th>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/c75\/50f\/59c\/c7550f59c2bd13c1d5321edb9eec0dca.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/212\/93e\/a15\/21293ea15548ad2a8037d0316885b119.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/ba0\/238\/720\/ba02387200c630c661a9e5444b07f480.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/b26\/9c9\/045\/b269c904554eff24d2983b852fd26196.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/53e\/2ec\/d76\/53e2ecd7674a680ce1553d88fea096f1.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/b8c\/e73\/123\/b8ce73123f8b1a871a27e92b908342ea.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/cdb\/ec6\/a09\/cdbec6a09b2eabfddb5e6af3fd8a5c12.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/ab0\/150\/9ab\/ab01509ab64b396271ac05e6ef0767cc.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/99b\/5b2\/475\/99b5b24752d39b2822c505163b5ceeef.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/5bc\/d71\/bb0\/5bcd71bb029b496af0e22e6d7599d008.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/d0b\/acd\/d30\/d0bacdd30aeb099e968a82cc4c909cb0.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/2cf\/007\/bd7\/2cf007bd7fd50768ad98eb8ecac92338.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/0d9\/f45\/bfc\/0d9f45bfc9c87e9d0c8c14a8506f0ac5.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/f6a\/694\/fd8\/f6a694fd8f7e412cab0b6399aa66ac1f.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/cc2\/c19\/300\/cc2c19300a47ba874e165c4fcc399ce8.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/470\/189\/9d6\/4701899d65c3830d3a1477a9179129e3.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/c91\/bda\/963\/c91bda9637da2bb8560b3eabbfb4763b.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/ce9\/35c\/18c\/ce935c18c4a731dccd807c999cb7e835.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/f62\/307\/959\/f62307959aeb5ecd6fd51edc01a328e6.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/800\/d4c\/338\/800d4c338de81850dbc95b3ee482ec59.png\"\/>  <\/td>\n<\/tr>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0424\u0430\u0439\u043b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f 14\u041c\u0411 \u0434\u043b\u044f 2<sup>17<\/sup> \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430 icpc. \u0414\u043b\u044f g++ \u2014 12 \u041c\u0411. \u041e\u0431\u0430 \u043f\u0440\u0438 O0. \u0423\u0440\u043e\u0432\u0435\u043d \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 O0 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 inline \u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e nop&lt;long&gt; \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0435\u0442 \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c nop \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439.<\/p>\n<h4>\u0412\u044b\u0441\u043e\u043a\u0438\u0435 \u0434\u0435\u0440\u0435\u0432\u044c\u044f<\/h4>\n<p>\u0414\u043b\u044f \u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0434\u0430\u043d\u043d\u044b\u0445 \u0440\u0430\u0437\u043c\u0435\u0440 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u043e\u0439 \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438 \u043f\u0440\u0438\u043d\u044f\u0442\u043e\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e(256 \u0434\u043b\u044f clang++, 900 \u0434\u043b\u044f g++). \u0427\u0442\u043e\u0431\u044b \u043e\u0431\u043e\u0439\u0442\u0438 \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0435\u0440\u0435\u0432\u043e. \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0435\u043e\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0433\u043b\u0443\u0431\u0438\u043d\u0430 \u0434\u0435\u0440\u0435\u0432\u0430 \u044d\u0442\u0430\u043f\u0430 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u2014 (sizeof(long)-1) == 63. \u0410 2<sup>64<\/sup> \u0431\u0430\u0439\u0442 \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0438\u0442 \u043b\u044e\u0431\u043e\u0439 \u0434\u0438\u0441\u043a. \u041f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u0435\u0434\u0435\u043b \u043c\u043d\u043e\u0433\u043e \u043c\u0435\u043d\u044c\u0448\u0435. <br \/>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u0434\u0435\u0440\u0435\u0432\u043e, \u043c\u044b \u043d\u0435 \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0433\u043b\u0443\u0431\u0438\u043d\u044b \u0440\u0435\u043a\u0443\u0440\u0441\u0438\u0438.<br \/>  \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u0437\u0430\u043d\u0438\u043c\u0430\u0435\u0442 19 \u0441\u0442\u0440\u043e\u043a \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"cpp\">#ifndef LVL #       define LVL 3 #endif long x = 0; template&lt;int N=LVL, long I=0&gt;  struct foo{         inline static double bar(double m)                 {x++;return foo&lt;N-1,I&gt;::bar(m) + foo&lt;N-1,((1&lt;&lt;(LVL-N))|I)&gt;::bar(m) + I;}; }; template&lt;long I&gt; struct foo&lt;0,I&gt;{         inline static double bar(double m) {x++; return m;}  }; #include &lt;iostream&gt; int main(int argc, char **argv){         double ret = foo&lt;&gt;::bar(argc);         std::cout &lt;&lt; x &lt;&lt; &quot; &quot; &lt;&lt; ret &lt;&lt; std::endl;         return int(ret); } <\/code><\/pre>\n<p>  \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0434\u0435\u0440\u0435\u0432\u043e, \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0438\u043c\u0435\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0438\u043f. \u041a\u0430\u0436\u0434\u044b\u0439 \u0442\u0438\u043f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0437\u0443\u0435\u0442\u0441\u044f \u043f\u0430\u0440\u043e\u0439 \u0447\u0438\u0441\u0435\u043b:   <\/p>\n<ul>\n<li>N \u2014 \u043d\u043e\u043c\u0435\u0440 \u0443\u0440\u043e\u0432\u043d\u044f;<\/li>\n<li>I \u2014 \u043d\u043e\u043c\u0435\u0440 \u0443\u0437\u043b\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435. <\/li>\n<\/ul>\n<p>  \u041a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u0432\u043d\u0443\u0442\u0440\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d \u043e\u0442 0 \u0434\u043e N.<\/p>\n<p>  \u0411\u0430\u043b\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0441 nop-\u0430\u043c\u0438 \u0442\u0443\u0442 \u044f \u043d\u0435 \u0441\u0442\u0430\u043b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0435. \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f long x \u2014 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0432\u0430\u043b\u0430\u0441\u044c \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u0431\u043e\u0440\u043a\u0438. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f 2<sup>LVL+1<\/sup>. <\/p>\n<p>  \u0421\u0431\u043e\u0440\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438:  <\/p>\n<pre><code class=\"bash\"> clang++  -DLVL=$n -o fbomb$n .\/fbomb.cc  -O$x      g++  -DLVL=$n -o fbomb$n .\/fbomb.cc  -O$x     icpc  -DLVL=$n -o fbomb$n .\/fbomb.cc -O$x <\/code><\/pre>\n<p> \u0432 \u0442\u043e\u043c \u0436\u0435 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0438 \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d \u0432\u044b\u0448\u0435.<br \/>  \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 LVL \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0440\u0430\u0432\u043d\u044b\u043c 18 \u0434\u043b\u044f clang++. \u0414\u043b\u044f g++ \u0438 icpc \u2014 16, \u043f\u0440\u0438\u0447\u0435\u043c \u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0442\u043e\u0433\u043e \u0431\u044b\u043b\u0430 \u043b\u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0430 \u043e\u043f\u0446\u0438\u044f &#8212;std=c++11 \u0438\u043b\u0438 \u043d\u0435\u0442. \u041a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u0430\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u043b\u043e \u043f\u0430\u043c\u044f\u0442\u0438.  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0438 \u0434\u043b\u044f \u0434\u0435\u0440\u0435\u0432\u0430<\/b><\/p>\n<div class=\"spoiler_text\">\n<table>\n<tr>\n<th>\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438  <\/th>\n<th>\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430  <\/th>\n<th>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435  <\/th>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/4d1\/5f6\/fc8\/4d15f6fc85a2a8628177c02dc28b0eed.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/2f1\/8dd\/684\/2f18dd68496113cd7e67b11927848bd5.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/34a\/c13\/999\/34ac139990966a0a9adeb98458e2dbfe.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/9f9\/267\/110\/9f9267110c187ab47c8e108006260421.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/1ad\/5df\/2cc\/1ad5df2cc8159b40400a92f500d9820a.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/840\/1e3\/af4\/8401e3af453963a5bddbaf79710206db.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/4d5\/019\/9d6\/4d50199d6df321a3a363851555943e4f.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/fbe\/b1a\/28e\/fbeb1a28e4ac32061c51f3ebb63f7b15.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/22c\/4c2\/0ec\/22c4c20ec5b630d800fcc53eb0bf3907.png\"\/>  <\/td>\n<\/tr>\n<\/table>\n<table>\n<tr>\n<th>\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438  <\/th>\n<th>\u0420\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430  <\/th>\n<th>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u043e\u043c \u0444\u0430\u0439\u043b\u0435  <\/th>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/4d2\/d27\/c7e\/4d2d27c7e075ca689625f55a9b74ff5f.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/1cb\/6d9\/025\/1cb6d9025abe46044f234450406351f6.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/83e\/cec\/0c1\/83ecec0c1af8dc24edb00aecf2fd5745.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/b61\/284\/ec5\/b61284ec5234aefb365e54d311b087ec.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/144\/350\/893\/144350893d11d375518a85df366c1282.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/600\/2b5\/32c\/6002b532c0237bcf362145b24be90696.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/b28\/c33\/38c\/b28c3338c65dca138bf3d59ab8242c7a.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/e10\/29a\/c73\/e1029ac73f7609aeff4a57c01c8caca5.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/e26\/0b3\/dfb\/e260b3dfbdfe7e6976ba0b971ff8892f.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/11d\/061\/2e5\/11d0612e59a9abd06646b490e47e96f7.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/143\/61f\/4a3\/14361f4a3f96f1e3fe683790b6d412c7.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/4e1\/dc9\/d11\/4e1dc9d117dd126d586cea0e072ac18f.png\"\/>  <\/td>\n<\/tr>\n<tr>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/b8d\/454\/811\/b8d454811c5906a219e3012790f443fe.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/086\/dc3\/503\/086dc350396272908ab10d0f83d34cee.png\"\/>  <\/td>\n<td><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/827\/d59\/1af\/827d591afbd745bcd34896caf0e39e50.png\"\/>  <\/td>\n<\/tr>\n<\/table>\n<p>  <\/div>\n<\/div>\n<p>  \u041c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u0440 \u0444\u0430\u0439\u043b\u0430:  <\/p>\n<ul>\n<li> 43\u041c\u0411 \u0434\u043b\u044f icpc -O0 -DLVL=17;   <\/li>\n<li>42\u041c\u0411 \u0434\u043b\u044f clang++ -O0 -DLVL=17;   <\/li>\n<li>22MB \u0434\u043b\u044f g++ -O0 -DLVL=16.   <\/li>\n<\/ul>\n<h4>\u042f\u0432\u043d\u043e\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/h4>\n<p>43\u041c\u0411 \u2014 \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043c\u0430\u043b\u043e, \u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0444\u0430\u0439\u043b \u0435\u0449\u0451 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u0438 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c \u043e\u0431\u044a\u0435\u043c\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0430\u043c\u044f\u0442\u0438? \u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u0438\u043c \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c \u0438\u0437 \u0442\u0440\u0435\u0445 \u2014 icpc. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0438 \u044f\u0432\u043d\u043e\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<br \/>  \u041c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434, \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043f\u0440\u0438 \u0435\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438. \u0420\u0430\u0437\u0434\u0435\u043b\u0438\u043c \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434 \u043d\u0430 \u0442\u0440\u0438 \u0444\u0430\u0439\u043b\u0430 \u2014 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430, main \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e\u0435 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432:  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">fbomb.hh<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">extern long x;  template&lt;int L=LVL, int N=L, long I=0&gt; struct foo{         inline static double bar(double m)                 {x++;return foo&lt;L,N-1,I&gt;::bar(m) + foo&lt;L,N-1,((1&lt;&lt;(L-N))|I)&gt;::bar(m) + I;}; }; template&lt;int L, long I&gt; struct foo&lt;L,0,I&gt;{         inline static double bar(double m) {x++; return m;}  };  <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">main.cc<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\"> #include &quot;fbomb.hh&quot; \/\/for i in $(seq 0 13);do echo &quot;extern template struct foo&lt;LVL,L,$i&gt;;&quot;;done #define L   (LVL-5) extern template struct foo&lt;LVL,L,0&gt;; extern template struct foo&lt;LVL,L,1&gt;; extern template struct foo&lt;LVL,L,2&gt;; extern template struct foo&lt;LVL,L,3&gt;; ... extern template struct foo&lt;LVL,L,30&gt;; extern template struct foo&lt;LVL,L,31&gt;;  #include &lt;iostream&gt; long x = 0; int main(int argc, char **argv){         double ret = foo&lt;LVL&gt;::bar(argc);         std::cout &lt;&lt; x &lt;&lt; &quot; &quot; &lt;&lt; ret &lt;&lt; std::endl;         return int(ret); } <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<div class=\"spoiler\"><b class=\"spoiler_title\">part.cc<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"cpp\">template class foo&lt;LVL, _L, _I&gt;; <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>\u041e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e g++ -c main.cc -DLVL=21 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0432\u044b\u043b\u0435\u0442\u0430\u0435\u0442 \u043f\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0443 \u043f\u0430\u043c\u044f\u0442\u0438 \u0442\u0430\u043a\u0436\u0435 \u043a\u0430\u043a \u043f\u0440\u0438 \u043f\u043e\u043b\u043d\u043e\u043c \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430. \u0422\u0430\u043a\u0430\u044f \u0436\u0435 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0434\u043b\u044f clang++. Icpc \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u0442 main.cc \u043c\u0435\u043d\u0435\u0435 \u0447\u0435\u043c \u0437\u0430 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u044f \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432 \u0437\u0430\u043d\u044f\u043b\u0430 \u0431\u043e\u043b\u0435\u0435 4 \u0447\u0430\u0441\u043e\u0432 \u0432\u0440\u0435\u043c\u0435\u043d\u0438:<\/p>\n<pre><code class=\"bash\">for i in $(seq 0 31);do     echo -n &quot;$i:&quot;;date;     icpc -O2 -c .\/part.cc -o part21_16_$i.o -DLVL=21 -D_L=16 -D_I=$i;sleep 10; done <\/code><\/pre>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u0435 \u043f\u0430\u043c\u044f\u0442\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438 \u043f\u043e\u0434\u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/5bf\/b44\/248\/5bfb44248763866ba30b5d87ad9f0d44.png\"\/>  <\/div>\n<\/div>\n<p>\u041b\u0438\u043d\u043a\u043e\u0432\u043a\u0430 \u0437\u0430\u043d\u044f\u043b\u0430 \u043c\u0435\u043d\u044c\u0448\u0435 \u043c\u0438\u043d\u0443\u0442\u044b. \u0412 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0441\u044f \u0444\u0430\u0439\u043b \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 53\u041c\u0411. \u042d\u0442\u043e \u0444\u0430\u0439\u043b \u0441\u043e\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u0441 -O2. -O0 \u0434\u0430\u043b\u043e \u0431\u044b \u0431\u043e\u043b\u044c\u0448\u0438\u0439 \u0440\u0430\u0437\u043c\u0435\u0440, \u043d\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u044d\u0442\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u044f \u043d\u0435 \u0441\u0442\u0430\u043b \u0438\u0437-\u0437\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 <s>\u0438 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438<\/s> \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430.<\/p>\n<p>  \u0421\u0430\u043c\u043e\u0435 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043c\/\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0440\u043e\u043a = 2.3\u041c\u0431\/c\u0442\u0440\u043e\u043a\u0443 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0434\u043b\u044f \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u0438\u0437 \u043f\u0435\u0440\u0432\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 (icpc -O0 list.cc)<br \/>  \u041c\u0435\u0442\u0440\u0438\u043a\u0430 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0448\u0443\u0442\u043e\u0448\u043d\u0430\u044f, \u043d\u043e \u0437\u0430\u0431\u0430\u0432\u043d\u0430\u044f. 2.3 \u2014 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u0443\u0437\u043d\u0430\u0442\u044c \u0435\u0441\u043b\u0438 \u043a\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442 \u0431\u043e\u043b\u044c\u0448\u0435\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435.<\/p>\n<p>  \u0423\u0434\u0430\u0447\u0438 \u043d\u0430\u043c \u0432\u0441\u0435\u043c.    \t \t\t   \t<\/p>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/179137\/\"> http:\/\/habrahabr.ru\/post\/179137\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u041d\u0435\u0434\u0430\u0432\u043d\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0441\u044f \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043b\u044e\u0441\u043e\u0432\u044b\u0445 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432. \u0412 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430\u0445 \u0432\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u0440\u043c\u0438\u043d <a href=\"http:\/\/www.daniweb.com\/software-development\/cpp\/threads\/346683\/template-code-bloat\">code bloat<\/a>. \u0414\u043b\u044f \u0441++ \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0442\u044c <s>\u043d\u0435\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0438\u0440\u0443\u0435\u043c\u043e\u0435<\/s> \u0443\u0432\u0435\u043b\u0438\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0434\u0430 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0433\u043e \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u043c. \u041a\u043e\u0434 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0437\u0430 \u0441\u0447\u0435\u0442 \u0442\u043e\u0433\u043e \u0447\u0442\u043e \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u043c\u0435\u0435\u0442 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0447\u0435\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043a \u0431\u043e\u043b\u0435\u0435 \u0443\u0434\u043e\u0431\u043d\u043e\u043c\u0443 \u0442\u0438\u043f\u0443. \u0422.\u0435. template T foo(T a); \u0434\u043b\u044f int \u0438 char \u2014 \u044d\u0442\u043e \u0434\u0432\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u043e\u0442\u043a\u0430\u0437\u043e\u043c \u043e\u0442 \u0448\u0430\u0431\u043b\u043e\u043d\u043e\u0432, \u043b\u0438\u0431\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u044f\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0442\u0438\u043f\u043e\u0432. <br \/>  \u041d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u044b\u0432\u0435\u0440\u043d\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u0430\u0438\u0437\u043d\u0430\u043d\u043a\u0443 \u0438 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0438\u0437 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u0430 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0444\u0430\u0439\u043b \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430.<br \/>  \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0432\u043f\u0435\u0447\u0430\u0442\u0438\u043b \u2014 \u0443 \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0432\u0441\u0435\u0433\u043e 53Mb \u0438\u0437 60 \u0441\u0442\u0440\u043e\u043a \u043a\u043e\u0434\u0430. \u0418 \u0442\u043e \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u0442\u0440\u0435\u0445 \u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440\u043e\u0432 \u0438 \u0446\u0435\u043d\u043e\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0447\u0430\u0441\u043e\u0432 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0446\u0438\u0438. \u0410 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043c\/\u0441\u0442\u0440\u043e\u043a\u0438 \u2014 2.3\u041c\u0411\/\u0441\u0442\u0440\u043e\u043a\u0443 \u0434\u043b\u044f \u043e\u0431\u044a\u0435\u043c\u0430 14\u041c\u0411.<br \/>  \u041a\u0430\u043a \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u2014 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-179137","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/179137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=179137"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/179137\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=179137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=179137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=179137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}