java - z/OS C/C++ fseeko 对于多卷数据集非常慢
问题描述
在fseeko
多卷数据集上调用需要几秒钟,例如:
stream=fopen("//'A.B.C'", "rb,type=record");
fseeko(stream, 40000, 0);
它需要超过 8 秒。如评论中所述,记录了许多描述该问题的 APAR:
https://www.ibm.com/support/pages/apar/PK5078 https://www.ibm.com/support/pages/apar/PQ94363
问题是:是否可以在不迁移到单卷或多条带数据集的情况下提高性能?
原来的问题是:
我有带有参数的数据集 ABCPO=PS
和RECFM=FS
. 以下 Java 代码对于单卷数据集运行速度很快。
ZFile zfile = new ZFile("//'A.B.C'", "rb,type=record");
file.seek(1000);
file.seek(2000);
file.seek(4000);
搜索功能需要几毫秒。
如果数据集 ABC 分配在多个卷上,则每次调用file.seek()
需要几秒钟。进一步的实验表明,访问实际上是顺序的,例如 callzfile.seek(10000)
比 call 长 10 倍zfile.seek(1000)
。
为多卷数据集执行 ZFile.seek 的正确方法是什么?