`

perl 时间性能分析

    博客分类:
  • perl
 
阅读更多
项目中有个组件是用perl语言编写,最近该组件有个新需求要开发,学习代码的过程中发现现有代码连数据库的方式是用sqlplus连接oracle,将其数据生成到文本文件,再利用读文件的方式读入到内存数据结构中. 这种方式虽然能解决问题,如果改成直连数据库,就可以不用文本文件中转了,性能是否也会提升?
让我们来对比下, 以下代码分成两块 if块里的内容是直连,else块里的内容是sqlplus方式.
数据量是60W条左右.


#!/usr/bin/perl
use DBI;
my $now1 = time;

if(0) {
	$dbname="sid";
	$user="user";
	$passwd="password";
	$dbh="";
	$dbh = DBI->connect("dbi:Oracle:$dbname",$user,$passwd) or die "can't connect to
	database ". DBI-errstr;
	#连接数据库
	$sth=$dbh->prepare("select * from dba_source");
	$sth->execute;
	#执行sql语句
	while (@recs=$sth->fetchrow_array) {
		#读取记录数据
		print $recs[0].":".$recs[1].":".$recs[2]."\n";
	}
	#断开连接 
	$dbh->disconnect;
}
else {
	system "sqlplus", "system/orcl\@ORCL", "\@zsql.sql";
	my $dbdata = "C:/Perl/bin/test/dbout.txt";
	open(IN, $dbdata);

	while(<IN>) {
		chomp;
		my $oneLine = $_;
		print "oneLine:$oneLine\n";
	}
}

my $now2 = time;
my $diff = $now2 - $now1;
print "time cost:$diff s\n";



oracle直连:
第5行的条件改成1,运行3次,耗时分别为 58s, 58s, 50s.
sqlplus连接:
第5行的条件改成0,运行3次,耗时分别为 260s, 209s, 147s.

可见,虽然sqlplus连接第三次运行的耗时在不断减少,但不可否认,直连比sqlplus方式至少快1倍.
通过加上-d:NYTProf运行,并生成html后,
perl -d:NYTProf z1.pl
nytprofhtml nytprof.out


我们可以看到sqlplus语句的运行时间是27.3s,而直连时只消耗了375ms.



细心的读者可能会发现sqlplus连接时耗时从260->209->147,耗时减少明显,那到底是sql数据被缓存还是perl自身的优化呢? 通过对比两次sqlplus运行的prof信息,我们可以看到print语句运行时间从171s降低到了41s, 看来是perl内部对print做了些优化.





  • 大小: 26.7 KB
  • 大小: 31.8 KB
分享到:
评论

相关推荐

    集群好书《高性能Linux服务器构建实战》 试读章节下载

    第10章 基于Linux服务器的性能分析与优化 10.1 系统性能分析的目的 10.1.1 找到系统性能的瓶颈 10.1.2 提供性能优化方案 10.1.3 使系统硬件和软件资源的使用达到平衡 10.2 分析系统性能涉及的人员 ...

    apache-response-time:针对apache Web服务器访问日志的性能分析,重点是响应时间

    apache-response-time:针对apache Web服务器访问日志的性能分析,重点是响应时间

    GAMMA安装程序及教程含用户手册 资源已更新

    Ø 时间序列形变分析 Ø 永久散射体时序序列形变分析 Ø 高分辨率自适应偏移量跟踪 Ø 干涉SAR技术生成DEM (Tandem-X) Ø 多时相滤波和多时相影像分析 Ø 软件采用ANSI-C语言编写,可以在Linux、Windows及Mac/...

    考勤系统安全性实现-课设

    利用其提供的各种优越性,首先在短时间内建立系统应用原型,然后,对初始原型系统进行需求迭代,不断修正和改进,直到形成用户满意的可行系统.本系统完成了如下主要功能:学生及教师的注册与安全登录,签到并防止冒名签到...

    WEB安全测试

    8.13 使用线程化提高性能 189 第9章 查找设计缺陷 191 9.1 绕过必需的导航 192 9.2 尝试特权操作 194 9.3 滥用密码恢复 195 9.4 滥用可预测的标识符 197 9.5 预测凭证 199 9.6 找出应用中的随机数 200 9.7 测试...

    MYSQL网络数据库PDF学习资源

    6.5.2 分析命令行参数 166 6.6 处理查询 172 6.6.1 处理不返回结果集的查询 173 6.6.2 处理返回结果集的查询 174 6.6.3 通用目标查询处理程序 176 6.6.4 可选择的查询处理方法 178 6.6.5 mysql_store_result()与 ...

    mysql网络数据库指南(中文版) part1

    6.5.2 分析命令行参数 166 6.6 处理查询 172 6.6.1 处理不返回结果集的查询 173 6.6.2 处理返回结果集的查询 174 6.6.3 通用目标查询处理程序 176 6.6.4 可选择的查询处理方法 178 6.6.5 mysql_store_result()...

    java开源包8

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    [完整][中文][WEB安全测试].(美)霍普.扫描版.pdf

    8.13 使用线程化提高性能 189 第9章 查找设计缺陷 191 9.1 绕过必需的导航 192 9.2 尝试特权操作 194 9.3 滥用密码恢复 195 9.4 滥用可预测的标识符 197 9.5 预测凭证 199 9.6 找出应用中的随机数 200 9.7 测试...

    Linux最早是Linus Torvalds在1991年开始设计开发

    linux具有对多种语言如:C、C++、Java、Tcl/tk、Perl等很多语言的编译器/解释器,以及集成开发环境、调试和其它开发工具。以前,我们一直对windows平台下如VB VC软件开发的高效和便捷津津乐道,也是windows对linux...

    Android SQLite--小巧好用的SQLite GUI管理工具

    6、时间测量: SQL执行的时间会自动测量和显示,以帮助优化查询。 7、正则表达式:在SQL关键字regexp是支持,并增加了完整的Perl的正则表达式语法5.10 SQLiteSpy。的实施,实现了利用DIRegEx库。 8、数学SQL函数:...

    SQLiteSpy可视化工具

    它的图形用户界面使得它很容易探讨,分析和操纵sqlite3的数据库。 注意:SQLiteSpy是免费供个人和教育用途,SQLiteSpy主要特点: 1、数据库一览?树状显示所有的架构,包括表,列,索引和触发器在数据库中包含的...

    java开源包1

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包11

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包2

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包3

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包6

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

    java开源包5

    nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能...

Global site tag (gtag.js) - Google Analytics