大数的类型

时间:2009-03-01 14:06:33

标签: c# math largenumber

我正在开发一款需要处理大量数据的应用。

我检查了一些可用的LargeNumber课程,并找到了一些我很满意的课程。我有一个大整数和大浮点数的类。

由于某些数字很小而且有些大问题是是否值得检查数字的长度,如果它很小,请使用常规C#int或double,如果是大则使用我拥有的其他类或者如果我已经在使用Large Integer和Large Float类,我应该坚持使用它们,即使是较小的数字。

我的考虑纯粹是表现。我是否会为较小的数字节省足够的时间,以便在输入之后检查每个数字是值得的。

4 个答案:

答案 0 :(得分:2)

真的很难说 - 取决于你的第三方图书馆:)

最好的办法是使用System.Diagnostics.StopWatch类,进行大量不同的计算,计算时间并比较结果,我猜...

[编辑] - 关于基准测试,我会对你的largeInt类型进行一系列基准测试,以便对常规32/64位数进行计算,并检查数字是否适合常规Int32 / Int64类型(他们应该),将它们“向下转换”为这些类型,然后使用这些类型运行相同的计算。从你的问题来看,如果内置类型更快,这听起来就像你要做的那样..

如果您的应用程序针对的人数超过您自己,请尝试在不同的计算机(单核,多核,32位,64位平台)上运行它们,如果平台似乎在计算时间内产生很大影响,使用某种策略模式在不同的机器上进行不同的计算。

祝你好运:)

答案 1 :(得分:2)

我希望一个体面的大数字库能够自己做这个优化......

答案 2 :(得分:2)

我会说是的,只要您在常规范围内有足够的价值,支票就会超过自己的收入。

逻辑很简单:整数加法是一个汇编指令。结合比较,这是三个或四个指令。这种操作的任何软件实现都可能要慢得多。

最理想的是,此检查应在LargeNumber库本身中完成。如果他们不这样做,你可能需要一个包装器,以避免在整个地方进行检查。但是你需要考虑包装器的额外成本。

答案 3 :(得分:0)

在一个项目中工作,在这个项目中,相同的字段需要处理非常大的数字,同时对于非常小的数字需要精确度。
最终存储了每个数量的字段(尾数和指数)。
我们为尾数/指数计算做了一个类,它表现很好。