我正在使用Common Lisp编写Web服务器。现在它工作正常但速度慢。根据分析,瓶颈是expt-mod
函数,用于RSA进行密钥交换。
这是详细信息。我从客户端(浏览器)获得c
。 c
是2048位整数。我从RSA私钥文件中获得了n
和d
。 n
和d
也是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-mod
和ironclad:expt-mod
,但没有运气。分析结果显示几乎相同。
那我在哪里犯错误?感谢。
答案 0 :(得分:0)
我不确定这是不是答案,但我确实通过从Closure CL切换到SBCL来解决这个问题。