0

在 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为不同的内核使用单独的文件。
4

1 回答 1

2

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

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

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

于 2016-07-13T12:47:21.417 回答