我正在开发一个需要处理非常大的数字的应用程序。
我查看了一些可用的大数类,并找到了几个我满意的。我有一个用于大整数和大浮点数的类。
由于一些数字将是小的,一些数字将是大的,所以问题是是否值得检查数字的长度,如果它很小,使用常规的C# int或double,如果它很大,则使用其他我已经拥有的大数类,或者如果我已经在使用大整数和大浮点数类,即使对于较小的数字,也应该坚持使用它们。
我的考虑纯粹是性能。对于较小的数字,我会节省足够多的时间,以至于值得在将每个数字放入后检查吗?
我正在开发一个需要处理非常大的数字的应用程序。
我查看了一些可用的大数类,并找到了几个我满意的。我有一个用于大整数和大浮点数的类。
由于一些数字将是小的,一些数字将是大的,所以问题是是否值得检查数字的长度,如果它很小,使用常规的C# int或double,如果它很大,则使用其他我已经拥有的大数类,或者如果我已经在使用大整数和大浮点数类,即使对于较小的数字,也应该坚持使用它们。
我的考虑纯粹是性能。对于较小的数字,我会节省足够多的时间,以至于值得在将每个数字放入后检查吗?
很难说 - 取决于您使用的第三方库 :)
最好使用System.Diagnostics.StopWatch类,进行大量不同的计算,计时并比较结果,我猜这样做会更好..
[编辑] - 关于基准测试,我会使用您的largeInt类型执行常规32/64位数字的计算系列,并检查数字是否适合常规Int32 / Int64类型(它们应该),将它们“向下转换”为这些类型,然后使用这些类型运行相同的计算。根据您的问题,如果内置类型更快,则应该采用这种方法。
如果您的应用程序面向的是比您自己更多的人,请尝试在不同的机器上运行它们(单核,多核,32位,64位平台),如果平台对计算所需的时间产生了很大的影响,请使用某种策略模式在不同的机器上以不同的方式进行计算。
祝你好运 :)
曾在一个项目中工作,需要处理非常大的数字,并同时处理非常小的数字的精度。
结果发现每个这种类型的数字都需要储存到两个字段(尾数和指数)中。
我们为尾数/指数计算制作了一个类,并且它的表现非常出色。