Database 使函数抵抗超过支持的最大数的数的最好方法是什么?

Database 使函数抵抗超过支持的最大数的数的最好方法是什么?,database,algorithm,performance,integer,storage,Database,Algorithm,Performance,Integer,Storage,所以,我知道有些编程语言有最大数(整数)。我正试图找到一个解决这个问题的方法。这更多的是一个基于算法的问题和一个存储问题。所以基本上,我试图将信息存储到数据库中。但是,我正试图找到一种方法来测试最坏的情况(达到一个如此大的数字,它不再被支持),并找到一个解决方案。假设我有一个名为functionInTime的函数,它看起来像这样: functionInTime(){ currenttime = getCurrentTime(); foo(); // Random void fun

所以,我知道有些编程语言有最大数(整数)。我正试图找到一个解决这个问题的方法。这更多的是一个基于算法的问题和一个存储问题。所以基本上,我试图将信息存储到数据库中。但是,我正试图找到一种方法来测试最坏的情况(达到一个如此大的数字,它不再被支持),并找到一个解决方案。假设我有一个名为functionInTime的函数,它看起来像这样:

functionInTime(){
    currenttime = getCurrentTime();
    foo(); // Random void function
    endtime = getCurrentTime();
    return (endtime - currenttime);
}
storeToDB(time){ // time is an INTEGER
    dbInstance = new DBINSTANCE();
    dbInstance.connectTo("wherever");
    timesRun = dbInstance.get("times_run"); // return INTEGER
    listOfTimes = dbInstance.get("times_list"); // return ARRAY
    dbInstance.set("times_run", timesRun+1);
    dbInstance.set("times_list", listOfTimes.addToArray(time));
    dbInstance.close();
}
这个函数本质上应该只是检查运行函数foo需要多长时间。此外,假设有一个和函数,它看起来类似于:

SUM(arrayOfNumbers){
    var S = 0;
    for(int i = 0; i < arrayOfNumbers.length; i++){
        S = S + arrayOfNumbers[i];
    }
    return S;
}
然而,就效率而言,这就是问题开始突出的地方,并使我相信这是一个糟糕的算法。最后,假设我有一个名为computeAverage的函数,即:

computeAverage(){
    dbInstance = new DBINSTANCE();
    dbInstance.connectTo("wherever");
    timesRun = dbInstance.get("times_run"); // return INTEGER
    listOfTimes = dbInstance.get("times_list"); // return ARRAY
    return SUM(listOfTimes)/timesRun;
}

由于最终目标是报告每次计算的平均值,我认为上述方法应该有效。然而,我试图测试的是,如果为变量TimeRun返回的值太大,以至于语言无法支持这样的数字,会发生什么情况。解析一个这么长的数组将花费很长时间,但是如果数组的大小是语言不支持的数字,该怎么办?删除或重置变量timesRun或listOfTimes会扭曲数据,并抛出使用此变量的任何其他度量

::: {"times_run": N} // N = number not supported by language
functionTime();
printThisOut("The overage average is "+computeAverage()+" ms per run...");
::: ERROR (times_run is not a supported number)

如何以一种既高效又能抵抗最大数字溢出的方式无限地添加数据?

“如果数组的大小是语言不支持的数字,该怎么办”-这是什么意思?我所知道的每种语言都支持从0到最大可能整数(它们允许)的每个整数。要处理一个太大(或负数)的数字(可能是作为字符串或沿着这些行输入的),只需在某个地方进行检查。因此我认为在JavaScript中,最大的整数可能是N=(2^53)-1。如果用户试图增加它,我相信它会变为负数。我想问的是,当您尝试将另一个元素添加到大小为N的数组时会发生什么情况。如果您希望在一个数组中包含多个元素(顺便说一句,如果您存储4字节的int,则需要16 gig的内存),您大概可以在插入之前检查大小。如果您想知道如果您尝试插入它,实际会发生什么(在JavaScript中),那么您可能应该重写您的问题以更清楚地关注这一点,并用JavaScript标记替换所有标记。我猜这只会给你带来某种错误。Javascript对所有数字都使用双精度浮点,所以“可能的最大整数”确实相当大。但是,有一个最小的正不可表示整数,即Math.pow(2,53)+1。如果你尝试在Math.pow(2,53)中加一,你会得到相同的Math.pow(2,53),但是加2(或1.1)会得到Math.pow(2,53)+2。数组的最大大小受可用内存或Math.pow(2,32)的限制,以先超过的为准。