在 ABAP 中处理二进制数据

Working with binary data in ABAP

我正在尝试在 ABAP 中实现一些加密函数,但我对二进制字符串操作的低性能感到困惑。

例如,我有一个字符串 X(不是 XString),我想在一个循环中一个字节一个字节地读取它。我说:

DO n TIMES.
  b = data+offset(1).
...

这可行,但读取速度约为 1.5 MB/s。包括按位加法、循环移位和模加法在内的其他操作也运行缓慢。

结果,我在 ABAP 中的散列速度约为 600 KB/s,而在 C/C++ 中约为 100 MB/s。

我怀疑 ABAP 是否适合处理二进制数据。也许还有另一种惯用的方法来处理二进制数据;或者除了将加密函数提取到 C# 或 Java 服务之外别无他法?

正如所建议的那样,ABAP 不一定是实现系统类型功能的最佳方式,这不仅是出于性能原因,而且因为有时在 ABAP 中处理某些数据类型可能非常笨拙。

也许您可以在 C 中实现您的加密函数,然后通过 RFC 从 ABAP 与它们交互,您的 C 应用程序充当 RFC 服务器,您通过 RFC 调用从 ABAP 调用它。您可以找到有关安装 NetWeaver RFC SDK 的更多信息 here and about writing an RFC server here