我正在设计一个数学软件,其算法适用于通用整数类型,如机器ints或GMP整数。为了提高性能,人们通常希望使用机器ints,但是如果存在溢出,那么您可能想要尝试切换到GMP;最好是在运行时。到目前为止,整个程序都是作为整数类型的模板编写的。随着图书馆的发展,痛苦也在增加:
我可以想到以下的解决方案。重构代码,使其依赖于通过编译时宏获得的一个固定类型。然后创建库的几个副本,每个整数类型一个,并将它们链接到可执行文件中。缺点似乎是,我需要一个接口的库本身。
简短的问题是:在几乎整个程序依赖于类型的情况下,设计模式是什么?
发布于 2013-01-31 17:10:11
GNU多精度算法库一直以来
精心设计,以尽可能快,既小的操作数和巨大的操作数。
换句话说,如果您使用GMP库,那么这将为您解决这些困难,并为您节省了大量的精力!
发布于 2013-01-31 17:21:51
在我自己的数学软件中,我默认使用GMP,但如果它不可用,我想提供一个退路。我也不喜欢巨大的gmpxx头文件,它减缓了在我的慢速机器上的编译速度。
因此,我实际上是在一个未定义的整数上编写了一个包装类(使用std::aligned_storage使用pimpl )。在编译期间可以选择后端。
这样可以消除模板,并为我提供足够的灵活性。
https://stackoverflow.com/questions/14631053
复制相似问题