首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何抽象出数学软件中的整数类型

如何抽象出数学软件中的整数类型
EN

Stack Overflow用户
提问于 2013-01-31 16:55:19
回答 2查看 158关注 0票数 6

我正在设计一个数学软件,其算法适用于通用整数类型,如机器ints或GMP整数。为了提高性能,人们通常希望使用机器ints,但是如果存在溢出,那么您可能想要尝试切换到GMP;最好是在运行时。到目前为止,整个程序都是作为整数类型的模板编写的。随着图书馆的发展,痛苦也在增加:

  • 编译时间和内存消耗正在失控。
  • 编译时的错误消息不太有用。
  • 调试更痛苦。
  • 整个代码都在头文件中。

我可以想到以下的解决方案。重构代码,使其依赖于通过编译时宏获得的一个固定类型。然后创建库的几个副本,每个整数类型一个,并将它们链接到可执行文件中。缺点似乎是,我需要一个接口的库本身。

简短的问题是:在几乎整个程序依赖于类型的情况下,设计模式是什么?

EN

回答 2

Stack Overflow用户

发布于 2013-01-31 17:10:11

GNU多精度算法库一直以来

精心设计,以尽可能快,既小的操作数和巨大的操作数。

换句话说,如果您使用GMP库,那么这将为您解决这些困难,并为您节省了大量的精力!

票数 4
EN

Stack Overflow用户

发布于 2013-01-31 17:21:51

在我自己的数学软件中,我默认使用GMP,但如果它不可用,我想提供一个退路。我也不喜欢巨大的gmpxx头文件,它减缓了在我的慢速机器上的编译速度。

因此,我实际上是在一个未定义的整数上编写了一个包装类(使用std::aligned_storage使用pimpl )。在编译期间可以选择后端。

这样可以消除模板,并为我提供足够的灵活性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14631053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档