我使用 gprof 和报告分析了我的代码,如果不是全部,前 20 名左右的大部分内容都与向量有关
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
14.71 0.05 0.05 3870399 0.00 0.00 std::vector<bool, std::allocator<bool> >::size() const
11.76 0.09 0.04 10552897 0.00 0.00 std::_Bit_reference::_Bit_reference(unsigned long*, unsigned long)
11.76 0.13 0.04 7890323 0.00 0.00 std::_Bit_const_iterator::_Bit_const_iterator(std::_Bit_iterator const&)
5.88 0.15 0.02 10089215 0.00 0.00 std::_Bit_iterator::operator*() const
5.88 0.17 0.02 6083600 0.00 0.00 std::vector<bool, std::allocator<bool> >::operator[](unsigned int)
5.88 0.19 0.02 3912611 0.00 0.00 std::vector<bool, std::allocator<bool> >::end() const
5.88 0.21 0.02 std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char, std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_int<unsigned long long>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char, std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, unsigned long long&) const
2.94 0.22 0.01 6523499 0.00 0.00 std::_Bit_reference::operator bool() const
2.94 0.23 0.01 3940406 0.00 0.00 std::vector<bool, std::allocator<bool> >::begin() const
2.94 0.24 0.01 2807828 0.00 0.00 std::_Bit_iterator::operator++()
2.94 0.25 0.01 146917 0.00 0.00 std::_Bit_iterator_base::_M_incr(int)
2.94 0.26 0.01 121706 0.00 0.00 std::__miter_base<unsigned long*, false>::__b(unsigned long*)
2.94 0.27 0.01 46008 0.00 0.00 std::_Bvector_base<std::allocator<bool> >::~_Bvector_base()
2.94 0.28 0.01 22596 0.00 0.00 std::_Bit_iterator std::__copy_move<false, false, std::random_access_iterator_tag>::__copy_m<std::_Bit_iterator, std::_Bit_iterator>(std::_Bit_iterator, std::_Bit_iterator, std::_Bit_iterator)
2.94 0.29 0.01 4525 0.00 0.05 integer::operator+(integer)
2.94 0.30 0.01 1382 0.01 0.01 void std::_Destroy<unsigned int*, unsigned int>(unsigned int*, unsigned int*, std::allocator<unsigned int>&)
2.94 0.31 0.01 std::string::size() const
2.94 0.32 0.01 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()
2.94 0.33 0.01 std::locale::locale()
2.94 0.34 0.01 __dynamic_cast
这是一个好兆头,因为这意味着我的其余函数非常有效,或者从 vector< bool > 访问值真的很慢?
我正在用 gcc -std=c++0x 编译