经过分析影响速度的主要原因是子字符串截取的速度上,在子字符串长度一样的情况下,SUBSTR()速度是最快的,但在本题子字符串的长度不一样的情况下SUBSTR()就用不上了,VFP9中的其它几个函数如:GETWORDNUM()、ALINES()等函数均不理想,只有另起炉灶了。
坚守VFP最后的阵地
T1 = SECONDS() CLOSE DATABASES USE 选择\sp ALIAS aa ln = OCCURS(",", jmss1) + 1 && 获取题目的数量 FOR lnj = 1 TO ln lnCnt = 0 RELEASE la LOCAL la[10, 2] SCAN lnfz = VAL(GETWORDNUM(jmss1, lnj, ",")) &&VAL(SUBSTR(jmss1, 2 *lnj - 1, 1)) IF ASCAN(la, lnfz, 1, ALEN(la, 1), 1) = 0 lnCnt = lnCnt + 1 la[lnCnt, 1] = lnfz la[lnCnt, 2] = 1 ELSE lnRow = (ASCAN(la, lnfz, 1, ALEN(la, 1), 1) + 1) / 2 la[lnRow, 2] = la[lnRow, 2] + 1 ENDIF ENDSCAN ENDFOR MESSAGEBOX(SECONDS() - T1) FOR lnj = 1 TO ALEN(la, 1) IF ASCAN(la, .F., 1, ALEN(la, 1), 1) > 0 lnCnt = (ASCAN(la, .F., 1, ALEN(la, 1), 1) + 1) / 2 EXIT ENDIF ENDFOR DIMENSION la(lnCnt - 1, 2) ASORT(la) LIST MEMORY LIKE la && 最后一题的数组结果
[此贴子已经被作者于2021-4-1 21:26编辑过]
[此贴子已经被作者于2021-4-1 22:04编辑过]