renderscript文件中的内核数量

时间:2016-07-13 11:46:37

标签: android renderscript android-renderscript

在renderscript中,内核必须在单独的.rs文件中定义,如下所示:

float __attribute__((kernel)) foo_1(uint32_t x) {
}

float __attribute__((kernel)) foo_2(uint32_t x) {
}

然后必须在主java文件中使用它,如下所示:

ScriptC_fileName tmp = new ScriptC_fileName(rs);

我想知道以下哪项是性能最好的编程实践以及原因。

  1. 在同一.rs文件中定义所有内核。
  2. 为不同的内核使用单独的.rs文件。

1 个答案:

答案 0 :(得分:2)

这真的是一个偏好和架构的问题。关注点分离:如果RS功能不相关,那么您可能不希望将其全部保存在一个.rs文件中。

当您创建ScriptC实例时,它正在创建Java端对象以及加载组件的本机/平台特定代码。因此,如果您在一个.rs文件中包含所有内容,则可以加载当时未使用/不需要的内容。因此更大的内存消耗和可能的本机/平台资源消耗。

除了我已经描述的更大的资源使用量之外,它(通常)的处理性能应该没有重大影响。当然,这将取决于硬件和实现。如果由于加载了更低级别的代码(在DSP或GPU上),硬件细节会对处理性能产生影响,那么这就是特定于平台的问题。