IBM大型机论坛索引
 
 登录
 
IBM大型机论坛索引 大型机:搜索 IBM Mainframe论坛:常见问题解答  寄存器
 

优化分类卡


IBM大型机论坛 -> 同步排序
发表新话题   回复主题
查看上一个主题 :: 查看下一个主题  
作者 信息
尼基

活跃用户


已加入:2008年9月20日
帖子:106
地点:班加罗尔

 发布 发表于:2018年5月24日,星期四6:25 pm
引用回复

大家好,
有人可以帮助我们优化排序卡之一。系统正在使用syncsort版本SYNCSORT FOR Z / OS 2.1.2。

关于排序卡:
该排序卡正在使用一个输入文件,并根据某些包含条件将其分为5个不同的文件。目前,它正在处理大约3亿条输入记录,通常需要18分钟的CPU tcb。

您能否帮助我们提供一些建议,以减少CPU时间。

代码如下所示:

码:

---- + ---- 1 ---- + ---- 2 ---- + ---- 3 ---- + ---- 4 ---- + ---- 5 ---- + ---- 6 ---- + ---- 7-
  OPTION COPY                                                         
 OUTFIL FNAMES = SORT01,INCLUDE =((5,4,SS,EQ,C'0008,0013,0015,0017'),   
                OR,(5,4,SS,EQ,C'0025,0026,0027,0030,0032,0054,0055'), 
                OR,(5,4,SS,EQ,C'0089,0091,0092,0097'))                 
 OUTFIL FNAMES = SORT02,INCLUDE =((5,4,SS,EQ,C'0006,0009,0018,0029'),   
                OR,(5,4,SS,EQ,C'0033,0043,0046,0050,0061,0064,0080'), 
                OR,(5,4,SS,EQ,C'0085'))                               
 OUTFIL FNAMES = SORT03,INCLUDE =((5,4,SS,EQ,C'0012,0025,0052,0084'),   
                OR,(5,4,SS,EQ,C'0093'))                               
 OUTFIL FNAMES = SORT04,INCLUDE =((5,4,SS,EQ,C'0051'))                   
 OUTFIL FNAMES = SORT05,INCLUDE =((5,4,SS,NE,C'0008,0013,0015,0017'),   
                AND,(5,4,SS,NE,C'0025,0026,0027,0029,0030,0032,0054'),
                AND,(5,4,SS,NE,C'0055,0058,0059,0075,0081,0082,0086'),
                AND,(5,4,SS,NE,C'0043,0093'),                         
                AND,(5,4,SS,NE,C'0051'))                               

回到顶部
查看用户资料 发送私信
谢尔盖肯

活跃的成员


已加入:2008年4月29日
职位:941
所在地:马里兰

 发布 发表于:星期五五月25,2018 5:18上午
引用回复

此示例中没有耗时的操作,这可能会严重影响SORT实用程序花费的CPU总时间。

只能提出一个较小的改进:消除OR / AND运算符,并对有效/无效选择值的整个列表使用单个“ SS,EQ”或“ SS,NE”。但是我怀疑它是否可以将整体性能提高超过1-2%;主要的耗时操作是:读/写300B记录,以及在I / O缓冲区和临时内存之间移动数据。

请记住SORT手册中的规则:
引用:
如果控制语句确实包含一个超出第71列的文字字符串,则在第72列中放置一个连续字符,并在下一张卡片图像的第16列中开始该文字字符串的延续。
回到顶部
查看用户资料 发送私信
阿伦·拉吉(Arun Raj)

主持人


已加入:2006年10月17日
帖子:2481
位置:@我的办公桌

 发布 发表:星期五五月25,2018 11:12下午
引用回复

您上面使用的子字符串比较格式会将字段与每个可能的4字节字符串进行比较。

例如,
码:
5,4,SS,EQ,C'0008,0013,0015,0017'
会寻找
码:
0008
008,
08,0
8,00

.....等等。因此,您可能要进行比实际需要更多的检查。

我没有Syncsort,也无法测试,但我建议您尝试将其修改为单个OR,而不是子字符串SS搜索,看看是否有任何改进。

为了简化多个EQ / OR,如果Syncsort版本支持,则可以使用以下格式。

码:
5,4,CH,EQ,L(C'0008',C'0013',C'0015',C'0017'...)
同样,多个NE / AND可以简化为
码:
5,4,CH,NE,L(C'0008',C'0013',C'0015',C'0017'...)
回到顶部
查看用户资料 发送私信
查看上一个主题 :: :: 查看下一个主题  
发表新话题   回复主题 查看书签
所有时间均为格林尼治标准时间+ 6小时
论坛索引 -> 同步排序

 


类似主题
话题 论坛 回覆
 没有新帖 连接键排序卡中的Reformat子句... DFSORT / ICETOOL 2
 没有新帖 排序后用逗号分隔逗号... DFSORT / ICETOOL 21
 没有新帖 比较文件使用排序卡与... DFSORT / ICETOOL 3
 没有新帖 需要使用外部排序卡的帮助... JCL和VSAM 15
 没有新帖 需要分类卡来过滤记录... JCL和VSAM 10
搜索我们的论坛:


 回到顶部