0

我正在尝试分析看起来像的代码

let x = some_map.par_iter().
   map|(key, value_collection)| {
      if some_test(key) {
         let frame = MyFrame::new(value_collection.len())
         for value in value_collection {
             frame.update(value)
         }
         return Some((key.to_owned(), Arc::new(frame))
      }
      None
   }).
    filter(|o| o.is_some()).
    map(|o| o.unwrap()).
    collect();

par_iter来自人造丝。

这段代码运行缓慢,所以我试图通过类似的命令使用 cargo-flamegraph 对其进行分析

sudo flamegraph --open my_app

当我更改par_iter为 时iter,我在火焰图中看到合理的东西,表明这Frame::update需要一些时间,并且各种HashMap方法都需要一些时间。

如果我使用par_iter的是充满人造丝的调用,但看起来它实际上并没有从人造丝创建的线程中给我任何结果。人造丝消费者和助手和桥梁有很多条目,但我的代码没有出现。我查看了 flamegraph.svg 并Frame:没有出现。(顺序版本有Frame::update。)

我需要做些什么来让火焰图也分析线程吗?

4

0 回答 0