我正在用Common Lisp编写一个web服务器。现在,它可以正常工作,但速度很慢。根据分析,瓶颈是expt-mod函数,它被用来进行密钥交换。
以下是详细信息。我从客户端(浏览器)获得了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,但是没有成功。分析结果显示大致相同。
那么,我在哪里犯了错呢?谢谢。
发布于 2016-09-09 16:14:45
我不确定这是否是答案,但我确实解决了这个问题,从闭包CL切换到SBCL。
https://stackoverflow.com/questions/24109530
复制相似问题