unique_ptr+.c++ --cut-- #include #include // для std::unique_ptr #include "Item.h" int main() { for (int i = 0; i < 100000000; ) { std::unique_ptr item(new Item(i)); i++; } return 0; } --cut-- ================================================================================ unique_ptr-.c++ --cut-- #include #include // для std::unique_ptr #include "Item.h" int main() { for (int i = 0; i < 100000000; ) { Item* item = new Item(i); i++; delete item; } return 0; } --cut-- ================================================================================ Item.h --cut-- #include class Item { public: Item(int i):i(i) { write(STDOUT_FILENO, ">", 1); } ~Item() { write(STDOUT_FILENO, "<", 1); i--; } private: int i; }; --cut-- ================================================================================ Makefile --cut-- all: unique_ptr+ unique_ptr- unique_ptr+: unique_ptr+.c++ c++ $^ -o $@ -O3 unique_ptr-: unique_ptr-.c++ c++ $^ -o $@ -O3 --cut-- ================================================================================ ================================================================================ ================================================================================ два запуска "+" $ sudo perf stat ./unique_ptr+ >/dev/null Performance counter stats for './unique_ptr+': 17 986,22 msec task-clock # 1,000 CPUs utilized 60 context-switches # 0,003 K/sec 0 cpu-migrations # 0,000 K/sec 122 page-faults # 0,007 K/sec 63 842 579 962 cycles # 3,550 GHz 133 523 204 873 instructions # 2,09 insn per cycle 26 203 958 590 branches # 1456,891 M/sec 72 456 branch-misses # 0,00% of all branches 17,987337609 seconds time elapsed 5,579484000 seconds user 12,406853000 seconds sys $ sudo perf stat ./unique_ptr+ >/dev/null Performance counter stats for './unique_ptr+': 17 917,53 msec task-clock # 1,000 CPUs utilized 124 context-switches # 0,007 K/sec 2 cpu-migrations # 0,000 K/sec 122 page-faults # 0,007 K/sec 63 179 246 976 cycles # 3,526 GHz 133 524 156 215 instructions # 2,11 insn per cycle 26 204 153 897 branches # 1462,487 M/sec 86 269 branch-misses # 0,00% of all branches 17,920061593 seconds time elapsed 5,931150000 seconds user 11,986282000 seconds sys ================================================================================ ================================================================================ ================================================================================ два запуска "-" $ sudo perf stat ./unique_ptr- >/dev/null Performance counter stats for './unique_ptr-': 17 844,46 msec task-clock # 1,000 CPUs utilized 50 context-switches # 0,003 K/sec 0 cpu-migrations # 0,000 K/sec 123 page-faults # 0,007 K/sec 63 310 787 822 cycles # 3,548 GHz 133 523 339 391 instructions # 2,11 insn per cycle 26 203 981 684 branches # 1468,466 M/sec 74 410 branch-misses # 0,00% of all branches 17,845494383 seconds time elapsed 5,940188000 seconds user 11,904377000 seconds sys $ sudo perf stat ./unique_ptr- >/dev/null Performance counter stats for './unique_ptr-': 18 921,22 msec task-clock # 1,000 CPUs utilized 57 context-switches # 0,003 K/sec 1 cpu-migrations # 0,000 K/sec 123 page-faults # 0,007 K/sec 65 560 699 792 cycles # 3,465 GHz 133 528 879 861 instructions # 2,04 insn per cycle 26 204 948 357 branches # 1384,950 M/sec 151 713 branch-misses # 0,00% of all branches 18,922880390 seconds time elapsed 6,348399000 seconds user 12,572791000 seconds sys ================================================================================ все.