【问题标题】:Need help deciphering gprof output需要帮助破译 gprof 输出
【发布时间】:2010-06-25 13:52:32
【问题描述】:

我很确定这与 void 函数指针向量有关,但我真的无法从中得出任何结论。

谁能帮我分析一下?

__gnu_cxx::__normal_iterator<unsigned long long const*, std::vector<unsigned long long, std::allocator<unsigned long long> > >::difference_type __gnu_cxx::operator-<unsigned long long const*, unsigned long long const*, std::vector<unsigned long long, std::allocator<unsigned long long> ...> >(__gnu_cxx::__normal_iterator<unsigned long long const*, std::vector<unsigned long long, std::allocator<unsigned long long> > > const&, __gnu_cxx::__normal_iterator<unsigned long long const*, std::vector<unsigned long long, std::allocator<unsigned long long> > > const&)

【问题讨论】:

    标签: c++ stl vector profiling pointers


    【解决方案1】:

    如果我是正确的,这可以大致翻译为:

    // Typedef for brevity
    typedef vector<unsigned long long>::iterator uv_iter;
    // Actual function
    uv_iter::difference_type operator-(const uv_iter &, const uv_iter &);
    

    因此,它可能指的是计算向量的两个迭代器之间的差异(=距离)的函数。无论如何,当优化器在这个函数上时,实际上应该在一个简单的内联指针比较中打开。

    【讨论】:

      【解决方案2】:

      似乎与减去两个std::vector&lt;unsigned long long&gt;::iterators有关。

      【讨论】:

        【解决方案3】:

        这是减法运算符 (operator-),用于将两个迭代器的差值转换为 unsigned long longs 的向量。在普通的 C++ 中,没有所有的分配器和额外的模板参数,这个函数签名看起来像这样:

        std::vector<unsigned long long>::iterator::difference_type operator- 
          (const std::vector<unsigned long long>::iterator& first,
           const std::vector<unsigned long long>::iterator& second);
        

        其中std::vector&lt;unsigned long long&gt;::iterator::difference_type 通常与ptrdiff_t 相同。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-12-12
          • 2021-10-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多