代码之家  ›  专栏  ›  技术社区  ›  Sruly

大数类型

  •  7
  • Sruly  · 技术社区  · 16 年前

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

    我查看了一些可用的LargeNumber类,发现了一些我很满意的类。我有一个大整数和大浮点数的类。

    由于有些数字是小的,有些是大的,问题是是否值得检查数字的长度,如果它是小的,则使用常规的C#int或double,如果是大的,则使用我拥有的其他类,或者如果我已经使用大整数和大浮点类,则即使对于较小的数字,我也应该坚持使用它们。

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

    4 回复  |  直到 16 年前
        1
  •  2
  •   cwap    16 年前

    很难说-取决于您的第三方库:)

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

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

        2
  •  2
  •   shoosh    16 年前

    我希望一个像样的大数字库能够自己进行优化。。。

        3
  •  2
  •   Hosam Aly    16 年前

    我会说是的,只要你在正常范围内有足够的值,支票本身就可以支付更多。

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

    最理想的情况是,这种检查应该在LargeNumber库中进行。如果他们不这样做,你可能需要一个包装,以避免检查各地。但是,您还需要考虑包装器的额外成本。

        4
  •  0
  •   Kb.    16 年前

    曾在一个项目中工作,在该项目中,相同的字段需要处理非常大的数字,同时需要处理非常小的数字的精度。
    最后,对每一个这样的数字都存储到字段(尾数和指数)。

    推荐文章