Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 使用expt mod函数的Lisp性能问题_Performance_Ssl_Profiling_Rsa_Common Lisp - Fatal编程技术网

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

Performance 使用expt mod函数的Lisp性能问题,performance,ssl,profiling,rsa,common-lisp,Performance,Ssl,Profiling,Rsa,Common Lisp,我正在用CommonLisp编写一个web服务器。现在它工作正常,但速度很慢。根据分析,瓶颈是expt mod函数,该函数用于RSA进行密钥交换 这里是细节。我从客户端(浏览器)获得了cc是2048位整数。我从RSA私钥文件中获得了n和dn和d也是2048位整数。然后计算(expt mod c d n)以获得TLS连接的预主密钥。分析结果如下所示: (EXPT-MOD C D N) took 542,184 microseconds (0.542184 seconds) to run. 9,94

我正在用CommonLisp编写一个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实用程序:expt mod
ironclade:expt mod
,但没有成功。分析结果显示大致相同


那么我在哪里犯了错误呢?谢谢。

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

您需要知道它是如何被调用的,以及为什么被调用的,也许调用的次数太多了?我使用。您未能创建高性能RSA引擎,您还想让我们说什么?嗨@owlstead,我没有创建RSA引擎。我试着使用cl实用程序包和Ironcold中的一个。我也试着用克里基的那个。你是说性能低是因为代码的缘故吗?模幂运算(RSA专用指数中使用了大指数)是RSA最耗时的组成部分,在我所知道的所有算法中,只有RSA密钥对生成的速度慢于模幂运算。现在,如果您将0.5秒与优化的本机实现进行比较,它仍然非常慢,但是我希望在大数字库未优化的系统中使用这样的值。如果您想要更快的速度,请使用基于EC的方法,但请注意,并非所有客户端都支持EC。@SamuelEdwinWard当我使用带有默认设置的Clozure CL时,出现了此问题。然后我切换到SBCL,它在expt mod的速度非常快。