Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我如何判断“是否”;内联“;工作?_Android_C++_Android Ndk - Fatal编程技术网

Android 我如何判断“是否”;内联“;工作?

Android 我如何判断“是否”;内联“;工作?,android,c++,android-ndk,Android,C++,Android Ndk,我有一个工作应用程序,我需要加快速度。我设置了评测(请参阅以了解详细信息),它似乎报告了每个函数所用的时间。我找不到一种方法来发现函数不同子部分所消耗的时间 然后,我在一些经常访问的小函数的声明中插入了关键字“inline”,希望能有一些加速。但当我再次分析时,我看到了相同的函数列表,包括我内联生成的函数。这让我怀疑内联关键字是否刚刚被忽略 我模糊地记得,对于某些编译器,内联关键字是编译器可以选择性忽略的东西,这取决于可用内存量等因素 那么,我可以做一些检查来确认“inline”关键字是否真的完

我有一个工作应用程序,我需要加快速度。我设置了评测(请参阅以了解详细信息),它似乎报告了每个函数所用的时间。我找不到一种方法来发现函数不同子部分所消耗的时间

然后,我在一些经常访问的小函数的声明中插入了关键字“inline”,希望能有一些加速。但当我再次分析时,我看到了相同的函数列表,包括我内联生成的函数。这让我怀疑内联关键字是否刚刚被忽略

我模糊地记得,对于某些编译器,内联关键字是编译器可以选择性忽略的东西,这取决于可用内存量等因素

那么,我可以做一些检查来确认“inline”关键字是否真的完成了它的工作吗?

您可以尝试:

  • 检查编译器的程序集或机器代码输出(无论是反汇编还是仅使用
    nm
    或android拥有的任何工具检查函数符号),或者使用调试器逐步执行

  • 使用编译器pragma/属性强制内联(例如,如果可用),如果您的分析结果不受影响,那么可能编译器已经内联了

  • 检查您的分析文档,确保您在进行分析时不会禁止内联


正如您所记得的,
inline
(以及在其类中定义的隐式内联的成员函数)只是编译器的提示。有些人认为,这只是管理一个定义规则问题的便捷方法,但是你必须检查个人C++编译器的代码,看看这些关键词是否真的毫无意义。编译器可能会使用各种度量来确定何时内联,包括影响的优化标志、外联函数的大小、函数调用的次数(例如,如果只有一个函数,为什么不内联一个大函数?)等等。

添加always_inline会使函数名从概要文件报告中消失。这足以证明,对我来说,它以前不是内联的,现在是:-)@Mick:酷-但百万美元的问题是。。。速度快吗?:-)我想是的,但我一直受着这个问题的困扰,把事情弄糊涂了:@Mick:听起来很棘手。。。20%是相当可观的。我对android或OpenCV一无所知,所以希望其他人能在这方面帮助你。干杯