GProf:什么是 __cosl_internal 和 __sinl_internal 函数?
GProf: What are __cosl_internal and __sinl_internal functions?
我一直在使用 gprof 分析我的程序并注意到顶部附近出现以下内容:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
17.50 6.69 6.69 _mcount_private
12.14 11.33 4.64 __cosl_internal
11.02 15.54 4.21 __sinl_internal
我经常使用 cmath 库中的 cos 和 sine 函数,因为 cos 和 sin 在这些函数调用的名称中,也许就是那些。但是,在探查器的下方,我还有
% cumulative self self total
time seconds seconds calls s/call s/call name
2.93 23.25 1.12 cos
2.51 24.21 0.96 sin
这令人困惑,所以我不完全确定 __cosl/sinl_internal 到底是什么意思。尝试 Google 问题时没有得到有意义的结果。
这里是使用的构建命令:
i686-w64-mingw32-g++.exe -Wshadow -Winit-self -Wredundant-decls
-Wcast-align -Wfloat-equal -Wunreachable-code -Wmissing-include-dirs
-pedantic-errors -pedantic -Wall -std=c++14 -fexceptions -O2 -std=c++14
-pg -DSFML_STATIC -std=c++14
这两个函数是 cos
和 sin
的实现细节。
如果您查看 https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-crt/math/cos.def.h#L51,三角函数在计算实际值之前首先检查值是 NaN
还是无穷大。这就是您获得两次点击的原因:
- 一个用于计算本身
- 一个用于包装代码以检查有效数字。
您可以将内部函数视为 cos/sin 调用。它们可能不会显示它们是从 sin/cos 调用的事实,具体取决于生成的调试信息以及优化级别。
我一直在使用 gprof 分析我的程序并注意到顶部附近出现以下内容:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
17.50 6.69 6.69 _mcount_private
12.14 11.33 4.64 __cosl_internal
11.02 15.54 4.21 __sinl_internal
我经常使用 cmath 库中的 cos 和 sine 函数,因为 cos 和 sin 在这些函数调用的名称中,也许就是那些。但是,在探查器的下方,我还有
% cumulative self self total
time seconds seconds calls s/call s/call name
2.93 23.25 1.12 cos
2.51 24.21 0.96 sin
这令人困惑,所以我不完全确定 __cosl/sinl_internal 到底是什么意思。尝试 Google 问题时没有得到有意义的结果。
这里是使用的构建命令:
i686-w64-mingw32-g++.exe -Wshadow -Winit-self -Wredundant-decls
-Wcast-align -Wfloat-equal -Wunreachable-code -Wmissing-include-dirs
-pedantic-errors -pedantic -Wall -std=c++14 -fexceptions -O2 -std=c++14
-pg -DSFML_STATIC -std=c++14
这两个函数是 cos
和 sin
的实现细节。
如果您查看 https://github.com/Alexpux/mingw-w64/blob/master/mingw-w64-crt/math/cos.def.h#L51,三角函数在计算实际值之前首先检查值是 NaN
还是无穷大。这就是您获得两次点击的原因:
- 一个用于计算本身
- 一个用于包装代码以检查有效数字。
您可以将内部函数视为 cos/sin 调用。它们可能不会显示它们是从 sin/cos 调用的事实,具体取决于生成的调试信息以及优化级别。