- 论坛徽章:
- 0
|
案例:
某测试程序A, 程序中调用了一个大文件F(200W--300W条记录,只做读取操作,不修改,不增加记录)
第一次运行时,耗时近30s
第二次运行时,耗时9s
这里我认为是因为是第一次运行后,文件F已被写入内存,再次运行时直接在内存中找到数据,所以效率增高。
于是使用setobjacc *purge的命令,将文件F从内存中清空,
那么现在在运行测试程序A时,果然耗时又是近30s
进一步设想,是否可以用setobjacc将文件F事先写入内存,然后运行?
结果经过测试之后,无论我将文件F写到哪个内存池(*BASE,*JOB),都没有起到预计的效果,时间仍是30s
请问:
应该如何处理,才能达到预期的效果呢?即事先将文件写入内存,减少页面错误率,从而增加程序效率,有办法可以实现吗?
对应于不同的子系统,也就是对应不同的内存池,是不是setobjacc命令需要用不同的参数?
如果A程序使用的是文件F的逻辑文件F1,那么在setobjacc时,应该用F,还是F1,还是两者均可?
如果A程序是用sbmjob命令,提交后台运行,有没有什么要注意的?
如果F文件较大,大于每一个内存池容量时,能不能拆分开放在不同的内存池中?
望高手指点 |
|