我正在尝试使用git rev-list
,Perl
和MongoDB
创建一个简单的API。
我的操作系统为Mojolicious
,我正在使用Windows 10
。
HTTP Server是WAMP捆绑包中的Apache。
PHP脚本可立即运行。
但Perl脚本的执行时间超过3秒,有时甚至超过5秒。
这是我的剧本
Strawberry Perl
所以这不是一个复杂的剧本。
但相比之下,此脚本的执行时间小于#!c:\strawberry\perl\bin\perl.exe
use Mojolicious::Lite;
use MongoDB;
use JSON;
use MongoDB::OID;
use Data::Dumper;
use CGI;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
# Declare DB connection variables
my $DB_HOST = 'mongodb://127.0.0.1';
my $DB_PORT = '27017' ;
my $mongo_client = MongoDB::MongoClient->new(host => "$DB_HOST", port => "$DB_PORT");
my $bank_db = $mongo_client->get_database( 'bank' );
get '/clients/' => sub {
my $self = shift;
my $clients = $bank_db->get_collection('clients')->find;
my @out_clients = ();
while (my $client = $clients->next) {
$client->{'_id'} = MongoDB::OID->new($client->{'_id'})->to_string;
push(@out_clients,$client);
}
if (@out_clients) {
my $response = generate_resposne(\@out_clients,"success");
$self->render(json => $response,status => 200);
}
else {
$self->render(json => 'Clients not found',status => 404);
}
};
30ms
此脚本大约需要1秒
#!c:\strawberry\perl\bin\perl.exe
print "Content-Type: text/html\n";
print "\n";
print "<html><head></head><body>
<form action='/index.pl'>
<input type='text' name='name'>
<input type='submit'>
</form>
</body></html>";
这些模块有什么问题?这样一个简单的脚本需要花费很多时间来执行。
请建议如何解决问题。正如我之前提到的,PHP可以立即发挥作用。
更新
#!c:\strawberry\perl\bin\perl.exe
print "Content-Type: text/html\n";
print "\n";
print "<html><head></head><body>
<form action='/index.pl'>
<input type='text' name='name'>
<input type='submit'>
</form>
</body></html>";
use MongoDB;
my $DB_HOST = 'mongodb://127.0.0.1';
my $DB_PORT = '27017' ;
my $mongo_client = MongoDB::MongoClient->new(host => "$DB_HOST", port => "$DB_PORT");
my $bank_db = $mongo_client->get_database( 'bank' );
my $clients = $bank_db->get_collection('clients')->find;
print $clients;
RAND_poll有什么问题?