Advertisement
Guest User

16x16 medium 1 profile full

a guest
Feb 7th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.72 KB | None | 0 0
  1. Flat profile:
  2.  
  3. Each sample counts as 0.01 seconds.
  4. % cumulative self self total
  5. time seconds seconds calls ms/call ms/call name
  6. 70.23 0.33 0.33 23099 0.01 0.02 create_copy_board(Board*)
  7. 14.90 0.40 0.07 23083 0.00 0.00 choose_cell_bf(Board*, int&, int&)
  8. 10.64 0.45 0.05 23100 0.00 0.00 Board::Board(int)
  9. 4.26 0.47 0.02 23083 0.00 0.00 Board::~Board()
  10. 0.00 0.47 0.00 69645 0.00 0.00 clear_number(Board*, int, Align, int)
  11. 0.00 0.47 0.00 69300 0.00 0.00 Board* const& std::forward<Board* const&>(std::remove_reference<Board* const&>::type&)
  12. 0.00 0.47 0.00 23215 0.00 0.00 update_solution(Board*, int, int, int)
  13. 0.00 0.47 0.00 23100 0.00 0.00 _ZN9__gnu_cxx13new_allocatorIP5BoardE9constructIS2_IRKS2_EEEvPT_DpOT0_
  14. 0.00 0.47 0.00 23100 0.00 0.00 std::enable_if<std::__and_<std::allocator_traits<std::allocator<Board*> >::__construct_helper<Board*, Board* const&>::type>::value, void>::type std::allocator_traits<std::allocator<Board*> >::_S_construct<Board*, Board* const&>(std::allocator<Board*>&, Board**, Board* const&)
  15. 0.00 0.47 0.00 23100 0.00 0.00 decltype (_S_construct({parm#1}, {parm#2}, (forward<Board* const&>)({parm#3}))) std::allocator_traits<std::allocator<Board*> >::construct<Board*, Board* const&>(std::allocator<Board*>&, Board**, Board* const&)
  16. 0.00 0.47 0.00 23100 0.00 0.00 std::deque<Board*, std::allocator<Board*> >::push_back(Board* const&)
  17. 0.00 0.47 0.00 23100 0.00 0.00 std::stack<Board*, std::deque<Board*, std::allocator<Board*> > >::push(Board* const&)
  18. 0.00 0.47 0.00 23100 0.00 0.00 operator new(unsigned long, void*)
  19. 0.00 0.47 0.00 23090 0.00 0.00 std::_Deque_iterator<Board*, Board*&, Board**>::_Deque_iterator(std::_Deque_iterator<Board*, Board*&, Board**> const&)
  20. 0.00 0.47 0.00 23086 0.00 0.00 std::deque<Board*, std::allocator<Board*> >::end()
  21. 0.00 0.47 0.00 23084 0.00 0.00 void __gnu_cxx::new_allocator<Board*>::destroy<Board*>(Board**)
  22. 0.00 0.47 0.00 23084 0.00 0.00 std::_Deque_iterator<Board*, Board*&, Board**>::operator*() const
  23. 0.00 0.47 0.00 23084 0.00 0.00 std::deque<Board*, std::allocator<Board*> >::empty() const
  24. 0.00 0.47 0.00 23084 0.00 0.00 std::stack<Board*, std::deque<Board*, std::allocator<Board*> > >::empty() const
  25. 0.00 0.47 0.00 23084 0.00 0.00 std::_Deque_iterator<Board*, Board*&, Board**>::operator--()
  26. 0.00 0.47 0.00 23084 0.00 0.00 std::enable_if<std::__and_<std::allocator_traits<std::allocator<Board*> >::__destroy_helper<Board*>::type>::value, void>::type std::allocator_traits<std::allocator<Board*> >::_S_destroy<Board*>(std::allocator<Board*>&, Board**)
  27. 0.00 0.47 0.00 23084 0.00 0.00 void std::allocator_traits<std::allocator<Board*> >::destroy<Board*>(std::allocator<Board*>&, Board**)
  28. 0.00 0.47 0.00 23084 0.00 0.00 std::deque<Board*, std::allocator<Board*> >::back()
  29. 0.00 0.47 0.00 23084 0.00 0.00 std::deque<Board*, std::allocator<Board*> >::pop_back()
  30. 0.00 0.47 0.00 23084 0.00 0.00 std::stack<Board*, std::deque<Board*, std::allocator<Board*> > >::pop()
  31. 0.00 0.47 0.00 23084 0.00 0.00 std::stack<Board*, std::deque<Board*, std::allocator<Board*> > >::top()
  32. 0.00 0.47 0.00 23084 0.00 0.00 bool std::operator==<Board*, Board*&, Board**>(std::_Deque_iterator<Board*, Board*&, Board**> const&, std::_Deque_iterator<Board*, Board*&, Board**> const&)
  33. 0.00 0.47 0.00 23083 0.00 0.02 update_stack(Board*)
  34. 0.00 0.47 0.00 24 0.00 0.00 std::__deque_buf_size(unsigned long)
  35. 0.00 0.47 0.00 6 0.00 0.00 std::_Deque_iterator<State*, State*&, State**>::_Deque_iterator(std::_Deque_iterator<State*, State*&, State**> const&)
  36. 0.00 0.47 0.00 6 0.00 0.00 std::remove_reference<std::_Deque_iterator<Board*, Board*&, Board**>&>::type&& std::move<std::_Deque_iterator<Board*, Board*&, Board**>&>(std::_Deque_iterator<Board*, Board*&, Board**>&)
  37. 0.00 0.47 0.00 6 0.00 0.00 std::remove_reference<std::_Deque_iterator<State*, State*&, State**>&>::type&& std::move<std::_Deque_iterator<State*, State*&, State**>&>(std::_Deque_iterator<State*, State*&, State**>&)
  38. 0.00 0.47 0.00 6 0.00 0.00 std::remove_reference<unsigned long&>::type&& std::move<unsigned long&>(unsigned long&)
  39. 0.00 0.47 0.00 4 0.00 0.00 __gnu_cxx::new_allocator<Board**>::new_allocator()
  40. 0.00 0.47 0.00 4 0.00 0.00 __gnu_cxx::new_allocator<Board**>::~new_allocator()
  41. 0.00 0.47 0.00 4 0.00 0.00 __gnu_cxx::new_allocator<State**>::new_allocator()
  42. 0.00 0.47 0.00 4 0.00 0.00 __gnu_cxx::new_allocator<State**>::~new_allocator()
  43. 0.00 0.47 0.00 4 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_M_get_Tp_allocator() const
  44. 0.00 0.47 0.00 4 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_M_get_map_allocator() const
  45. 0.00 0.47 0.00 4 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_M_get_Tp_allocator() const
  46. 0.00 0.47 0.00 4 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_M_get_map_allocator() const
  47. 0.00 0.47 0.00 4 0.00 0.00 std::allocator<Board**>::allocator<Board*>(std::allocator<Board*> const&)
  48. 0.00 0.47 0.00 4 0.00 0.00 std::allocator<Board**>::~allocator()
  49. 0.00 0.47 0.00 4 0.00 0.00 std::allocator<State**>::allocator<State*>(std::allocator<State*> const&)
  50. 0.00 0.47 0.00 4 0.00 0.00 std::allocator<State**>::~allocator()
  51. 0.00 0.47 0.00 4 0.00 0.00 std::_Deque_iterator<Board*, Board*&, Board**>::_M_set_node(Board***)
  52. 0.00 0.47 0.00 4 0.00 0.00 std::_Deque_iterator<Board*, Board*&, Board**>::_S_buffer_size()
  53. 0.00 0.47 0.00 4 0.00 0.00 std::_Deque_iterator<Board*, Board*&, Board**>::_Deque_iterator()
  54. 0.00 0.47 0.00 4 0.00 0.00 std::_Deque_iterator<State*, State*&, State**>::_M_set_node(State***)
  55. 0.00 0.47 0.00 4 0.00 0.00 std::_Deque_iterator<State*, State*&, State**>::_S_buffer_size()
  56. 0.00 0.47 0.00 4 0.00 0.00 std::_Deque_iterator<State*, State*&, State**>::_Deque_iterator()
  57. 0.00 0.47 0.00 4 0.00 0.00 unsigned long const& std::max<unsigned long>(unsigned long const&, unsigned long const&)
  58. 0.00 0.47 0.00 3 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_M_get_Tp_allocator()
  59. 0.00 0.47 0.00 3 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_M_get_Tp_allocator()
  60. 0.00 0.47 0.00 3 0.00 0.00 std::remove_reference<Board***&>::type&& std::move<Board***&>(Board***&)
  61. 0.00 0.47 0.00 3 0.00 0.00 std::remove_reference<State***&>::type&& std::move<State***&>(State***&)
  62. 0.00 0.47 0.00 2 0.00 0.00 print_board(Board*)
  63. 0.00 0.47 0.00 2 0.00 0.00 CycleTimer::currentTicks()
  64. 0.00 0.47 0.00 2 0.00 0.00 CycleTimer::currentSeconds()
  65. 0.00 0.47 0.00 2 0.00 0.00 CycleTimer::secondsPerTick()
  66. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<Board*>::deallocate(Board**, unsigned long)
  67. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<Board*>::allocate(unsigned long, void const*)
  68. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<Board*>::~new_allocator()
  69. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<State*>::deallocate(State**, unsigned long)
  70. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<State*>::allocate(unsigned long, void const*)
  71. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<State*>::~new_allocator()
  72. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<Board**>::deallocate(Board***, unsigned long)
  73. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<Board**>::allocate(unsigned long, void const*)
  74. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<State**>::deallocate(State***, unsigned long)
  75. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<State**>::allocate(unsigned long, void const*)
  76. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<Board*>::max_size() const
  77. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<State*>::max_size() const
  78. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<Board**>::max_size() const
  79. 0.00 0.47 0.00 2 0.00 0.00 __gnu_cxx::new_allocator<State**>::max_size() const
  80. 0.00 0.47 0.00 2 0.00 0.00 std::allocator<Board*>::~allocator()
  81. 0.00 0.47 0.00 2 0.00 0.00 std::allocator<State*>::~allocator()
  82. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_Deque_impl::~_Deque_impl()
  83. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_M_allocate_map(unsigned long)
  84. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_M_create_nodes(Board***, Board***)
  85. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_M_allocate_node()
  86. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_M_destroy_nodes(Board***, Board***)
  87. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_M_deallocate_map(Board***, unsigned long)
  88. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_M_initialize_map(unsigned long)
  89. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_M_deallocate_node(Board**)
  90. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::~_Deque_base()
  91. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_Deque_impl::~_Deque_impl()
  92. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_M_allocate_map(unsigned long)
  93. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_M_create_nodes(State***, State***)
  94. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_M_allocate_node()
  95. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_M_destroy_nodes(State***, State***)
  96. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_M_deallocate_map(State***, unsigned long)
  97. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_M_initialize_map(unsigned long)
  98. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_M_deallocate_node(State**)
  99. 0.00 0.47 0.00 2 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::~_Deque_base()
  100. 0.00 0.47 0.00 2 0.00 0.00 std::allocator_traits<std::allocator<Board*> >::deallocate(std::allocator<Board*>&, Board**, unsigned long)
  101. 0.00 0.47 0.00 2 0.00 0.00 std::allocator_traits<std::allocator<Board*> >::allocate(std::allocator<Board*>&, unsigned long)
  102. 0.00 0.47 0.00 2 0.00 0.00 std::allocator_traits<std::allocator<State*> >::deallocate(std::allocator<State*>&, State**, unsigned long)
  103. 0.00 0.47 0.00 2 0.00 0.00 std::allocator_traits<std::allocator<State*> >::allocate(std::allocator<State*>&, unsigned long)
  104. 0.00 0.47 0.00 2 0.00 0.00 std::allocator_traits<std::allocator<Board**> >::deallocate(std::allocator<Board**>&, Board***, unsigned long)
  105. 0.00 0.47 0.00 2 0.00 0.00 std::allocator_traits<std::allocator<Board**> >::allocate(std::allocator<Board**>&, unsigned long)
  106. 0.00 0.47 0.00 2 0.00 0.00 std::allocator_traits<std::allocator<State**> >::deallocate(std::allocator<State**>&, State***, unsigned long)
  107. 0.00 0.47 0.00 2 0.00 0.00 std::allocator_traits<std::allocator<State**> >::allocate(std::allocator<State**>&, unsigned long)
  108. 0.00 0.47 0.00 2 0.00 0.00 std::deque<Board*, std::allocator<Board*> >::_M_destroy_data(std::_Deque_iterator<Board*, Board*&, Board**>, std::_Deque_iterator<Board*, Board*&, Board**>, std::allocator<Board*> const&)
  109. 0.00 0.47 0.00 2 0.00 0.00 std::deque<Board*, std::allocator<Board*> >::begin()
  110. 0.00 0.47 0.00 2 0.00 0.00 std::deque<Board*, std::allocator<Board*> >::~deque()
  111. 0.00 0.47 0.00 2 0.00 0.00 std::deque<State*, std::allocator<State*> >::_M_destroy_data(std::_Deque_iterator<State*, State*&, State**>, std::_Deque_iterator<State*, State*&, State**>, std::allocator<State*> const&)
  112. 0.00 0.47 0.00 2 0.00 0.00 std::deque<State*, std::allocator<State*> >::end()
  113. 0.00 0.47 0.00 2 0.00 0.00 std::deque<State*, std::allocator<State*> >::begin()
  114. 0.00 0.47 0.00 2 0.00 0.00 std::deque<State*, std::allocator<State*> >::~deque()
  115. 0.00 0.47 0.00 2 0.00 0.00 std::remove_reference<std::allocator<Board*>&>::type&& std::move<std::allocator<Board*>&>(std::allocator<Board*>&)
  116. 0.00 0.47 0.00 2 0.00 0.00 std::remove_reference<std::allocator<State*>&>::type&& std::move<std::allocator<State*>&>(std::allocator<State*>&)
  117. 0.00 0.47 0.00 2 0.00 0.00 std::remove_reference<std::deque<Board*, std::allocator<Board*> >&>::type&& std::move<std::deque<Board*, std::allocator<Board*> >&>(std::deque<Board*, std::allocator<Board*> >&)
  118. 0.00 0.47 0.00 2 0.00 0.00 std::remove_reference<std::deque<State*, std::allocator<State*> >&>::type&& std::move<std::deque<State*, std::allocator<State*> >&>(std::deque<State*, std::allocator<State*> >&)
  119. 0.00 0.47 0.00 2 0.00 0.00 void std::swap<std::_Deque_iterator<Board*, Board*&, Board**> >(std::_Deque_iterator<Board*, Board*&, Board**>&, std::_Deque_iterator<Board*, Board*&, Board**>&)
  120. 0.00 0.47 0.00 2 0.00 0.00 void std::swap<std::_Deque_iterator<State*, State*&, State**> >(std::_Deque_iterator<State*, State*&, State**>&, std::_Deque_iterator<State*, State*&, State**>&)
  121. 0.00 0.47 0.00 2 0.00 0.00 void std::swap<unsigned long>(unsigned long&, unsigned long&)
  122. 0.00 0.47 0.00 1 0.00 0.00 _GLOBAL__sub_I__Z11choose_cellRiS_S_
  123. 0.00 0.47 0.00 1 0.00 0.00 _GLOBAL__sub_I_board
  124. 0.00 0.47 0.00 1 0.00 470.15 _GLOBAL__sub_I_stack_lock
  125. 0.00 0.47 0.00 1 0.00 0.00 read_input(int, char const**)
  126. 0.00 0.47 0.00 1 0.00 0.00 create_board(char const*, int)
  127. 0.00 0.47 0.00 1 0.00 0.00 parallel_brute_force()
  128. 0.00 0.47 0.00 1 0.00 0.00 __static_initialization_and_destruction_0(int, int)
  129. 0.00 0.47 0.00 1 0.00 0.00 __static_initialization_and_destruction_0(int, int)
  130. 0.00 0.47 0.00 1 0.00 0.00 __static_initialization_and_destruction_0(int, int)
  131. 0.00 0.47 0.00 1 0.00 0.00 __gnu_cxx::new_allocator<Board*>::new_allocator(__gnu_cxx::new_allocator<Board*> const&)
  132. 0.00 0.47 0.00 1 0.00 0.00 __gnu_cxx::new_allocator<Board*>::new_allocator()
  133. 0.00 0.47 0.00 1 0.00 0.00 __gnu_cxx::new_allocator<State*>::new_allocator(__gnu_cxx::new_allocator<State*> const&)
  134. 0.00 0.47 0.00 1 0.00 0.00 __gnu_cxx::new_allocator<State*>::new_allocator()
  135. 0.00 0.47 0.00 1 0.00 0.00 std::allocator<Board*>::allocator(std::allocator<Board*> const&)
  136. 0.00 0.47 0.00 1 0.00 0.00 std::allocator<Board*>::allocator()
  137. 0.00 0.47 0.00 1 0.00 0.00 std::allocator<State*>::allocator(std::allocator<State*> const&)
  138. 0.00 0.47 0.00 1 0.00 0.00 std::allocator<State*>::allocator()
  139. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_Deque_impl::_M_swap_data(std::_Deque_base<Board*, std::allocator<Board*> >::_Deque_impl&)
  140. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_Deque_impl::_Deque_impl(std::allocator<Board*>&&)
  141. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_Deque_impl::_Deque_impl()
  142. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_Deque_base()
  143. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_Deque_base(std::_Deque_base<Board*, std::allocator<Board*> >&&)
  144. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<Board*, std::allocator<Board*> >::_Deque_base(std::_Deque_base<Board*, std::allocator<Board*> >&&, std::integral_constant<bool, true>)
  145. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_Deque_impl::_M_swap_data(std::_Deque_base<State*, std::allocator<State*> >::_Deque_impl&)
  146. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_Deque_impl::_Deque_impl(std::allocator<State*>&&)
  147. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_Deque_impl::_Deque_impl()
  148. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_Deque_base(std::_Deque_base<State*, std::allocator<State*> >&&)
  149. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_Deque_base()
  150. 0.00 0.47 0.00 1 0.00 0.00 std::_Deque_base<State*, std::allocator<State*> >::_Deque_base(std::_Deque_base<State*, std::allocator<State*> >&&, std::integral_constant<bool, true>)
  151. 0.00 0.47 0.00 1 0.00 0.00 std::deque<Board*, std::allocator<Board*> >::deque()
  152. 0.00 0.47 0.00 1 0.00 0.00 std::deque<Board*, std::allocator<Board*> >::deque(std::deque<Board*, std::allocator<Board*> >&&)
  153. 0.00 0.47 0.00 1 0.00 0.00 std::deque<State*, std::allocator<State*> >::deque()
  154. 0.00 0.47 0.00 1 0.00 0.00 std::deque<State*, std::allocator<State*> >::deque(std::deque<State*, std::allocator<State*> >&&)
  155. 0.00 0.47 0.00 1 0.00 0.00 std::stack<Board*, std::deque<Board*, std::allocator<Board*> > >::stack(std::deque<Board*, std::allocator<Board*> >&&)
  156. 0.00 0.47 0.00 1 0.00 0.00 std::stack<State*, std::deque<State*, std::allocator<State*> > >::stack(std::deque<State*, std::allocator<State*> >&&)
  157. 0.00 0.47 0.00 1 0.00 0.00 std::remove_reference<std::_Deque_base<Board*, std::allocator<Board*> >&>::type&& std::move<std::_Deque_base<Board*, std::allocator<Board*> >&>(std::_Deque_base<Board*, std::allocator<Board*> >&)
  158. 0.00 0.47 0.00 1 0.00 0.00 std::remove_reference<std::_Deque_base<State*, std::allocator<State*> >&>::type&& std::move<std::_Deque_base<State*, std::allocator<State*> >&>(std::_Deque_base<State*, std::allocator<State*> >&)
  159. 0.00 0.47 0.00 1 0.00 0.00 void std::swap<Board***>(Board***&, Board***&)
  160. 0.00 0.47 0.00 1 0.00 0.00 void std::swap<State***>(State***&, State***&)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement