在Firefox中执行WASM时,什么是“调试陷阱处理”

问题描述

我已经使用脚本将大量C ++代码编译为WASM,并正在尝试优化其性能。这是我的探查器显示内容

Total Time   Total Cost  Self Time   Self Cost   Samples Function
51,272.77 ms    94.46%  51,272.77 ms    94.46%  29273   debug trap handling (in wasm)   Gecko
4,434.89 ms 8.17%   0 ms    0%  0       std::__2::__compressed_pair_elem<std::__2::basic_string<char,std::__2::char_traits<char>,std::__2::allocator<char> >::__rep,false>::__get() const   qalc.wasm   :3795283    localhost:8000
4,264.99 ms 7.86%   0 ms    0%  0       std::__2::__compressed_pair<std::__2::basic_string<char,std::__2::allocator<char> >::first() const  qalc.wasm   :3795198    localhost:8000
2,981.12 ms 5.49%   0 ms    0%  0       free  qalc.wasm   :3867464    localhost:8000

“调试陷阱处理”部分是什么意思,为什么我的代码在其中花费了这么多时间?

解决方法

我认为这意味着Firefox对Wasm进行了编译,使其适合调试,因此由于探查器已打开,因此您可以逐行浏览Wasm。这通常意味着对其进行了解释。 (这与用于编译C ++项目的标志无关。)

不太确定是否有从命令行进行概要分析的方法,也许您可​​以尝试插入对console.profile();的调用来包围您所关心的C ++代码的一部分。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...