使用expt-mod函数的Lisp性能问题

时间:2014-06-08 18:37:16

标签: performance ssl profiling rsa common-lisp

我正在使用Common Lisp编写Web服务器。现在它工作正常但速度慢。根据分析,瓶颈是expt-mod函数,用于RSA进行密钥交换。

这是详细信息。我从客户端(浏览器)获得cc是2048位整数。我从RSA私钥文件中获得了ndnd也是2048位整数。然后计算(expt-mod c d n)以获得TLS连接的预主密钥。分析显示如下:

(EXPT-MOD C D N) took 542,184 microseconds (0.542184 seconds) to run.
9,941 microseconds (0.009941 seconds, 1.83%) of which was spent in GC.
During that period, and with 4 available CPU cores
1,057,317 microseconds (1.057317 seconds) were spent in user mode
7,123 microseconds (0.007123 seconds) were spent in system mode
3,309,856 bytes of memory allocated.
10 minor page faults, 0 major page faults, 0 swaps.

我认为它超级慢,因为OpenSSL只需要0.002秒来处理TLS握手。我已经尝试了我自己的expt-mod版本,cl-utilities:expt-modironclad:expt-mod,但没有运气。分析结果显示几乎相同。

那我在哪里犯错误?感谢。

1 个答案:

答案 0 :(得分:0)

我不确定这是不是答案,但我确实通过从Closure CL切换到SBCL来解决这个问题。