我正在开发一个基于Web的日志管理系统,它将构建在Grails框架上,我将使用Python或Perl等文本处理语言之一.我创建了Python和Perl脚本来加载日志文件并解析每一行以将它们保存到MySQL数据库(该文件包含大约40,000行,大约7MB).使用Perl花了1分2秒,使用Python花了17秒.我曾经认为Perl比Python更快,因为Perl是原始的文本处理语言(我怀疑也来自不同的博客,我正在阅读有关Perl文本处理性能的文章).我也没想到Perl和Python之间有47秒的差异.为什么Perl需要比Python更多的时间来处理我的日志文件?是因为我使用了一些错误的数据库模块或我的代码和Perl的正则表达式可以改进吗?
注意:我是一名Java和Groovy开发人员,我没有使用Perl的经验(我使用的是Strawberry Perl v5.16).我也用Java(1分5秒)和Groovy(1分7秒)进行了这个测试,但处理日志文件的时间超过1分钟,所以两种语言都已经出来了,现在我想在Perl和蟒蛇.
PERL代码
use DBI;
use DBD::mysql;
# make connection to database
$connection = DBI->connect("dbi:mysql:logs:localhost:3306","root","") || die "Cannot connect: $DBI::errstr";
# set the value of your SQL query
$query = "insert into logs (line_number, dated, time_stamp, thread, level, logger, user, message)
values (?, ?, ?, ?, ?, ?, ?, ?) ";
# prepare your statement for connecting to the database
$statement = $connection->prepare($query);
$runningTime = time;
# open text file
open …Run Code Online (Sandbox Code Playgroud)