渲染脚本文件中的内核数

Number of kernels in a renderscript file

在 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 文件。

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

当您创建 ScriptC 实例时,它会创建 Java 端对象并加载组件的本机/平台特定代码。因此,如果您将所有内容都放在一个 .rs 文件中,那么您可能正在加载当时不是 used/required 的内容。如此大的内存消耗和可能的 native/platform 资源消耗。

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