gxqcn 发表于 2008-4-1 20:52:29

apfloat 的基选择是基于其数论原理的,需要三个充分大的素数。

HugeCalc小bit比GMP慢原因是多样的:

1、为适应多线程需要,适时响应用户退出请求,所以要经常检查终止标志,并用了 volatile 关键字进行限定(为防止被编译器优化掉);

2、HugeCalc 采用的是多层架构:无符号类-->有符号类-->代理类,且各层对出入参合法性进行了严格检查。因为用户没有源代码,所以在开发 Hugecalc 时严谨性、安全性始终是放在第一位的;

另,根据80/20法则,低级别算法应向高级别算法看齐,以避免切换算法时不必要的转换。

无心人 发表于 2008-4-1 20:56:09

:(
看不到你算法
也不知道你为什么这么做
===============
至于apfloat,你可能比我了解吧

无心人 发表于 2008-4-1 21:05:23

你说道80/20规则
难道你为了20%以下的用户可能退出的操作
而浪费这么多的资源做退出标志检测么?
有别的方法吧
1、设定统一内存管理,防止内存泄露
2、使用监控线程负责线程的终止

gxqcn 发表于 2008-4-1 21:52:58

用监控线程不好,它是一种非正常退出行为,很容易出问题。

我说的80/20法则,主要是指高级算法FFT/FNT即便被使用的概率没有常规算法的高,
但其效率却是起决定性作用的;把精力放在这关键性的20%上,将可收获80%,:victory:
一切的一切都要低阶算法向高阶算法看齐,尤其是在数据结构定义上。:handshake

HugeCalc 定位于超大规模的快速运算,而不仅仅定位于 RSA 之类的加解密;
诚然,在保证无损于高级算法的前提下,尽可能提高低级算法也是永远的追求目标。

无心人 发表于 2008-4-2 07:46:52

呵呵
XP还有监控进程呢
无所谓不好,关键在设计
98就是无监控进程造成容易死

mathe 发表于 2008-4-2 07:57:37

不知道你这里说的监控是什么意思?
OS肯定要监控进程的(毕竟进程是它创建的)
XP和98稳定性的区别不在于是否对进程进行监控,而是是否对系统内存的访问进行了保护。
在XP(Windows NT)下,用户进程是没有权限修改系统进程的内存空间的,但是98不同。
所以在Windows NT下,如果一个进程出了问题,那么仅仅这个进程会崩溃,不会影响到系统。但是98就不同,一个错误的进程有可能会导致整个系统崩溃。

无心人 发表于 2008-4-2 08:27:44

环境不同
监控的意义不同
我说的监控指要GxQ在他库里建立一个独立于运算环境的进程
用来响应用户的退出和对内存的分配和销毁等

gxqcn 发表于 2008-4-2 08:52:04

在DLL中很难实现。

若采用 无心人 的方案,用户如希望可随时终止运算,
则用户自己必须建多线程外,还必须通知DLL去创建监控线程,结束后再通知销毁。

因 DLL 无法在 DllMain() 中进行线程的创建/销毁,
所以对用户的行为要求更多,DLL内部也将变得不稳定。
该方案并不可取。

mathe 发表于 2008-4-2 09:21:57

线程的创建和销毁代价也是非常大的。

无心人 发表于 2008-4-2 09:34:13

那就别考虑用户终止问题
大部分数学软件都似乎不提供这个功能
就你 :lol
页: 3 4 5 6 7 8 9 10 11 12 [13] 14 15
查看完整版本: x86上128位二进制乘法最快速算法征解