该算法有两个改进建议:-
如果可能的话,aU 可以使用多线程以通过常数因子来加速过程(需要测试以获得实际值)。您可以使用多线程并行评估行。
湾。如果即使一列无效也可以停止处理行,那么您可以停止处理该行。此外,您可以分析大量数据的输入数据,并以递减无效的概率排列列,然后按此计算顺序检查列。此外,您还可以按照您对检查验证的列所做的方式安排验证条件的谓词
可能会提高性能的建议算法:-
for i in totalconds :
probability(i) = 0
for record in largeDataSet :
for col in record :
for cond in conditions :
if invalid(cond,col) :
probability(cond)++
sort(probability(cond),condorder,order=decreasing)
按 condorder 顺序检查条件
这是一种学习算法,可用于计算谓词的评估顺序,以对条件进行有效的短路评估,但有效输入需要相同的时间。您可以在大型样本输入数据集上离线评估此订单,并在实时使用期间存储在数组中。
编辑:我错过的另一个改进是对具有小范围有效值的列使用哈希表,因此我们不评估该列的条件,而是检查它是否在哈希表中。同样,如果无效值范围很小,那么我们在哈希表中检查它们。哈希表可以在使用文件开始评估之前填充。