如何减少perl中的等待时间
我有一个脚本,它每秒查询数据库的次数是可变的 例如,为了实现每小时36000个查询,我们在脚本中输入每分钟600个查询600 x 60=36000 这是我们得到的输出,您可以看到每个查询之间的延迟如何减少perl中的等待时间,perl,Perl,我有一个脚本,它每秒查询数据库的次数是可变的 例如,为了实现每小时36000个查询,我们在脚本中输入每分钟600个查询600 x 60=36000 这是我们得到的输出,您可以看到每个查询之间的延迟 {1} [2019-11-06 21:38:01.313] {1} [2019-11-06 21:38:01.413] {1} [2019-11-06 21:38:01.513] {1} [2019-11-06 21:38:01.613] {1} [2019-11-06 21:38:01.713] {
{1} [2019-11-06 21:38:01.313]
{1} [2019-11-06 21:38:01.413]
{1} [2019-11-06 21:38:01.513]
{1} [2019-11-06 21:38:01.613]
{1} [2019-11-06 21:38:01.713]
{1} [2019-11-06 21:38:01.813]
我的问题是我们错过了0.0100,因为我们有一个等待时间
每分钟速率=变化我们可以将此更改为每分钟最多960个查询,但我们希望fourmla能够灵活地处理0-960个查询
我的$wait_时间=(1/$rpm)*60*1(连接);(最多4个连接)等待时间根据连接数增加
有人知道如何减少查询之间的等待时间吗
谢谢
这是代码行
我的$wait_时间=(1/$rpm)*60*1
所以当我每分钟输入600个查询时
此代码行根据连接数计算等待时间
我的$wait_时间=(1/600)*60*1
1/600*60*1=WAIT:0.1嗯,您处理查询需要时间。如果我对你的问题的解释正确的话,一个脆弱的解决方案是测量当前处理所花费的时间,并将其从下一个睡眠时间中减去。当然,如果处理时间等于或超过睡眠时间,就会中断
一个干净的解决方案是有一个专用的主循环,它除了在单独的线程中休眠和启动查询之外什么都不做。我不确定这是否有帮助,因为我很难理解您的问题。我想你担心的是你没有按照你想要的速度提出问题 这可能是因为您认为等待时间是静态的。不是等待时间是静态的——这取决于前一个查询花费了多长时间——而是间隔是静态的
use Time::HiRes qw( time sleep ); # Add support for fractional times.
my $interval = (1 / $qpm) * 60 * 1; # In (fractional) seconds.
my $next_run = time;
while (1) {
my $wait = $next_run - time;
sleep($wait) if $wait > 0;
$next_run += $interval;
... do work ...
}
请显示您当前拥有的代码。Re“这是一个历元时间输出的示例。”,时间是多少?Re“我们错过了0.00100”,这是什么意思?0.00100是多少?“我们有一个等待时间”——什么“等待时间”?你在问如何减少“等待时间”,所以想必你还没有自己设置好…?@ikegami-很抱歉,查询弄错了-我已经更新了帖子。输出是查询运行时的结果—执行查询所用的时间。等待时间是两个值之间的差值,例如查询中的313-413第一行。启动线程非常昂贵。如果你睡
$wait\u time
的话,这将最终导致漂移。即使启动线程没有那么昂贵,情况也是如此。做一件事36000次加起来。修复了错误。