? 大数据量的嵌套循环
4*X1+5*X2+6*X3+7*X4现在X1,X2,X3,X4这四个变量都是范围值
如何用高效的方法获得每次的公式运算值
例如
X1:100~200000
X2:10~300000
X3:0~100000
X4:32~223000
目前正在写的程序比这个复杂得多,但基本意思差不多。所以借用这个问题向各位高手请教。此种类型有没有更高效的方法。
谢谢!!
鞠躬!! --------------------编程问答-------------------- 如果给定值到简单
问题你4个范围值,个人觉着,先取出交集运算,在挨个和交集比较得到差集 --------------------编程问答-------------------- "先取出交集运算,在挨个和交集比较得到差集"
这个能再说清楚一些吗?
--------------------编程问答-------------------- 有一点明白你的意思。现在想想可能我的程序要复杂一些。完全用这个可能不是太能表达清楚。重新表述一下程序内容:
X1为一个4000多条记录的数据表。表的内容有A1(int),B1(double),C1,D1,E1...
x2为一个2000多条记录的数据表。表的内容有A2(int),B2(double),C2,D2,E2...
X3为一个1000多条记录的数据表。表的内容有A3(int),B3(double),C3,D3,E3...
现在是将三个表的记录取出来计算f(x)=......,如果f(x)在符合的范围内,则将A1,A2,A3,B1,B2,B3。。。输出到指定的格式。这个有点排列组合的意思,全部嵌套循环的话,程序运行时间很长。 --------------------编程问答-------------------- 从你的需求看,唯一可以实现的就是计算公式f(x)的优化,其它地方看不出可以优化的地方,循环次数是必须那么多,但是循环一次如果可以从原来的10毫秒,缩短为1毫秒,甚至1/10毫秒,你看这个循环量下面,速度将有多大的提高啊。 --------------------编程问答-------------------- 另外有个递增计算的优化法,就是给每个表设置insert触发器,对新增的记录单独触发f(x)计算,并插入缓存表,缓存表里有以前一次性算好的组合,这样表内记录改动只要计算改动部分,叠加到缓存表里,而程序获取时直接从缓存表中去取。 --------------------编程问答-------------------- " 给每个表设置insert触发器,对新增的记录单独触发f(x)计算,并插入缓存表,缓存表里有以前一次性算好的组合,这样表内记录改动只要计算改动部分,叠加到缓存表里,而程序获取时直接从缓存表中去取。"
认真考虑了楼上这个提议,觉得这种方法适合表内容固定,有新增加的就将增加的记录提出来计算f(x).可是我自己程序中表中的记录是会发生全部改变的。一个规格的产品就会产生一组新的表格记录。
补充:.NET技术 , C#